Press "Enter" to skip to content

6、go字符类型

Last updated on 2022年2月16日

一、基本介绍

1、Go中没有专门的字符类型,如果要储存单个字符(字母),一般使用byte来保存;

2、Go语言中的字符使用UTF-8编码实现;

3、特征:传统语言的字符串是由字符组成,但是Go的字符串是由字节组成;

func main() {

var c1 byte = 'a'

var c2 byte = '0'

*//当我们直接输出byte值时,就是输出了对应的字符码值*

fmt.Println(c1, c2) *//97, 48*

*//如果需要输出原字符,需要使用格式化输出*

fmt.Printf("c1=%c c2=%c", c1, c2) *//c1=a c2=0*

}

如果我们保存的字符在ASCII表中,比如「0-9,a-z,A-Z,某些符号」,可以直接用byte保存;

4、对于汉字字符的一些情况

var c3 byte = '中'

fmt.Println(c3) *//错误,溢出了byte类型(255)的范围*

var c5 int = '中'

fmt.Println(c5) *//20013*

注:byte等于uint8无符号整数,汉字在Unicode编码(十进制)中为正数字符,所以byte可以储存单个的汉字,但是,某些汉字可能超出了byte(或者是uint8的范围),所以可以采用更大的类型来储存,比如 uint32、uint64、int等;

二、细节说明

1、在Go中,字符的本质是一个整数,直接输出时,是该字符对应的UTF-8编码的码值;

2、字符类型是可以运算的,因为相当于一个整数,它们都有对应的Unicode编码;

var c7 = 10 + 'a' *// 10 + 97*

fmt.Println(c7) *//107*

var c8 = 'a' + 'a' *// 97 + 97*

fmt.Println(c8) *//194*

3、码值和汉字之间是可以互相转换的

var c6 int = 20013

fmt.Printf("%c", c6) *//中*

4、在UTF-8中,英文字母1个字节,汉字3个字节

三、本质探讨

1、字符储存在计算机中的和取出的过程

储存:字符 -> 对应码值 -> 二进制 -> 储存

读取:二进制 -> 码值 -> 字符 -> 读取

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注