Golang基础语法:字符与字符串(三)
字符
字符基本介绍
Golang中没有专门的字符类型,如果要存储单个字符(字母),一般使用byte来保存。这点不同于c和c++使用char来存储。
Golang 使用的是UTF-8的Unicode编码,可以很方便地表示汉字,如果有小伙伴学过python就知道,python源代码上面总是有一行 \# -*- coding: UTF-8 -*-
代码,这行代码就是引入了中文编码,这样你在控制台打印中文字符的时候才不会报错,而Golang是21世纪的新语言,在开发之初就考虑到了这样的问题,开发者可以不用考虑编码问题,大胆地输出吧!
字符串就是- -串固定长度的字符连接起来的字符序列。Go的字符串是由单个字节连接起来的。也就是说对于传统的字符串是由字符组成的,而Go的字符串不同,它是由字节组成的。
package mainimport ( "fmt")//演示golang中字符类型使用func main() { var c1 byte = 'a' var c2 byte = '0' //字符的0 //当我们直接输出byte值,就是输出了的对应的字符的码值 // 'a' ==> fmt.Println("c1=", c1) fmt.Println("c2=", c2) //如果我们希望输出对应字符,需要使用格式化输出 fmt.Printf("c1=%c c2=%c\n", c1, c2) //var c3 byte = '北' //overflow溢出 var c3 int = '北' //overflow溢出 fmt.Printf("c3=%c c3对应码值=%d\n", c3, c3) //可以直接给某个变量赋一个数字,然后按格式化输出时%c,会输出该数字对应的unicode 字符 var c4 int = 22269 // 22269 -> '国' 120->'x' fmt.Printf("c4=%c\n", c4) //字符类型是可以进行运算的,相当于一个整数,运输时是按照码值运行 var n1 = 10 + 'a' // 10 + 97 = 107 fmt.Println("n1=", n1)}
以上代码输出为:
c1= 97c2= 48c1=a c2=0c3=北 c3对应码值=21271c4=国n1= 107
以上代码需要注意的是:
1、如果我们保存的字符在ASCII表的,比如[0-1, a-z,A-Z..]直接可以保存到byte
2、如果我们保存的字符对应码值大于255,这时我们可以考虑使用int类型保存
3、如果我们需要安装字符的方式输出,这时我们需要格式化输出,即fmt. Printf(“%c", c1)
字符类型的使用细节
1、字符常量是用单引号(")括起来的单个字符。例如: varcl byte='a'
varc2 int='
中’var c3 byte= '9'
2、 Go中允许使用转义字符' 来将其后的字符转变为特殊字符型常量。例如: varc3 char =‘n’
,’\n'表示换行符
3、Go语言的字符使用UTF-8编码,如果想查询字符对应的utf8码值,请打开 http://www.mytju.com/classcode/tools/encode_utf8.asp
需要我们注意的是:英文字母是1个字节,而汉字是3 个字节
4、在Go中,字符的本质是一个整数,直接输出时,是该字符对应的UTF-8编码的码值。
5、可以直接给某个变量赋一个数字,然后按格式化输出时%c,会输出该数字对应的unicode字符
如:
var c int = 24352 // 24352 -> '张' 120->'x'fmt.Printf("c=%c\n", c)//输出为“c=张”
6、字符类型是可以进行运算的,相当于一个整数,因为它们都对应有Unicode码.
var n = 10 + 'a' // 10 + 97 = 107fmt.Println("n1=", n1)//输出为:"n1 = 107 "//"n1 = k"
对于字符类型的本质的探讨
1、字符型存储到计算机中,需要将字符对应的码值(整数)找出来
存储: 字符 –> 对应码 —> 二进制 -> 存储
读取: 二进制 –> 码值 —> 字符 -> 读取
2、字符和码值的对应关系是通过字符编码表决定的(是规定好)
3、Go语言的编码都统一成了 utf-8
。 非常的方便,很统一,小伙伴们再也没有编码乱码的困扰了~
字符串string类型
基本结束
字符串就是一串固定长度的字符连接起来的字符序列。Go的字符串是由单个字节连接起来的。Go语言的字符串的字节使用UTF-8
编码标识Unicode文本
例如:
//string类型使用演示fun main(){ var addrees string = "北京 北邮 沙河 hello world!" fmt.Println(address)}
输出为:
北京 北邮 沙河 hello world!
string使用注意事项和细节
1、Go语言的字符串的字节使用UTF-8
编码标识Unicode文本,这样Golang统一使用 UTF-8
编码,中文乱码问题不会再困扰程序员。
2、字符串一旦赋值了,字符串就不能修改了:在Go中字符串是不可变的。
3、字符串的两种表示形式
- 双引号,会识别转义字符.
- 反引号,以字符串的原生形式输出,包括换行和特殊字符,可以实现防止攻击、输出源代码等效果
例子:
package mainimport ( "fmt")//演示golang中string类型使用func main() { //输出源代码等效果 【案例演示】 str2 := "abc\nabc" fmt.Println(str2) //使用的反引号 `` str3 := ` package main import ( "fmt" "unsafe" ) //演示golang中bool类型使用 func main() { var b = false fmt.Println("b=", b) //注意事项 //1. bool类型占用存储空间是1个字节 fmt.Println("b 的占用空间 =", unsafe.Sizeof(b) ) //2. bool类型只能取true或者false } ` fmt.Println(str3)}
4、字符串拼接方式
例子:
var str = "hello" + "北京"str += "666"
5、当一行字符串太长时,需要使用到多行字符串,可以如下处理
//记得+号要放在上面一行,若没有,系统会将其将其当作单独一行str4 := "hello " + "world" + "hello " + "world" + "hello " + "world" + "hello " + "world" + "hello " + "world" + "hello " + "world"fmt.Println(str4)
所有文章首发平台是微信公众号-极客印记,同步发布到CSDN,简书,掘金等平台博客–十安辰,喜欢的话,记得微信扫码关注我哦

文章来源:智云一二三科技
文章标题:Golang基础语法:字符与字符串(三)–十安辰
文章地址:https://www.zhihuclub.com/272.shtml