在 Go 语言中,还有一种字节类型 byte,它其实等价于 uint8 类型,可以理解为 uint8 类型的别名,用于定义一个字节,所以字节 byte 类型也属于整型。
Golang中没有专门的字符类型,如果要存储单个字符(字母),一般使用byte(byte类型的范围是0-255,所以0-255字符都可以用byte来保存,经典的就是asii里面的字符都可以使用byte来保存)来保存。
字符串就是一串固定长度的字符连接起来的字符序列。Go的字符串是由单个字节连接起来的。也就是说对于传统的字符串是由字符组成的,而Go的字符串不同,它是由字节组成的。
当我们输出byte值的时候,就是输出了对应字符的码值。
var c1 byte = 'a'
var c2 byte = '0'
fmt.Println(c1,c2)
97 48
如果想要输出对应的字符需要使用格式化输出即可%c
fmt.Printf("%c %c",c1,c2)
a 0
如果给了一个汉字会出错,因为对应的码值超出了0-255,byte是存储不进去的,使用int是可以存储进去的。
var c1 byte = '呗'
c3 := []byte{97,48}
fmt.Println(string(c3))
a0
对上面代码说明
1)如果我们保存的字符在 ASCⅡ表的,比如【0-1.a-z,A-Z.】直接可以保存到 byte
2) 如果我们保存的字符对应码值大于255,这时我们可以考虑使用 int类型保存
3)如果我们需要安装字符的方式输出,这时我们需要格式化输出,即 fmtPrintf("%c"c1).
字符类型使用细节1) 字符常量是用单引号('')括起来的单个字符,而不是双引号。例如∶var c1 byte='a' var c2 int='中' var c3 byte= 'g'
2)Go中允许使用转义字符'\'来将其后的字符转变为特殊字符型常量。
例如∶var c3 char ='\n' // '\n'表示换行符
3) Go语言的字符使用UTF-8编码,英文字母占有一个字节,汉字使用3个字节。
a := []byte("中")
for _,v := range a{
fmt.Println(v)
}
fmt.Println(len(a))
228
184
173
3
4)在Go中,字符的本质是一个整数,直接输出时,是该字符对应的UTF-8编码的码值。
5) 可以直接给某个变量赋一个数字,然后按格式化输出时%c,会输出该数字对应的unicode 字符
6) 字符类型是可以进行运算的,相当于一个整数,因为它都对应有Unicode码.
字符类型本质探讨1) 字符型存储到 计算机中,需要将字符对应的码值(整数)找出来
存储∶字符-->对应码值--->二进制->存储读取∶二进制--->码值--->字符-->读取
2) 字符和码值的对应关系是通过字符编码表决定的(是规定好)
3)Go语言的编码都统一成了utf-8。非常的方便,很统一,再也没有编码乱码的困扰了
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)