var a ='a'
fmt.Printf("%v %T",a,a)//值是97 代表ASCII码 类型int32
fmt.Printf("%c %T",a,a)//值是a 代表 原样 类型int32
定义一个字符串输出里面的字符
var b ="this"
fmt.Printf("%v %c %T",b[2],b[2],b[2])// 105 i uint8
一个汉字占 3 个字节utf-8编码 一个字母占用 1 个字节 ASCII码
unsafe.Sizeof() 不能查看string类型的占用的存储空间 用len()
var b ="this"
fmt.Println(len(b))// 占用4 个字节
b ="你好hello"
fmt.Println(len(b))// 占用11个字节var c ='国'
fmt.Printf("%v %c %T\n",c,c,c)// 22269(utf-8编码) 国 int32
byte类型
var m ="hello world"for i :=0; i <len(m); i++{
fmt.Printf("%v(%c) ",m[i],m[i])//104(h) 101(e) 108(l) 108(l) 111(o) 32( ) 119(w) 111(o) 114(r) 108(l) 100(d)}
rune 类型
var n ="你好好 我的world"for_, v :=range n {//rune
fmt.Printf("%v(%c) ",v,v)//20320(你) 22909(好) 22909(好) 32( ) 32() 25105(我) 30340(的) 119(w) 111(o) 114(r) 108(l) 100(d)}
修改字符
var s ="big"var byteStr =[]byte(s)//byte类型
byteStr[0]='s'
fmt.Println(string(byteStr))//sig
s ="你好的 world"var runeStr =[]rune(s)//rune类型
runeStr[0]='我'
fmt.Println(string(runeStr))//我好的 world