golang中string rune byte 三者的关系
Posted on 2018/03/03
在Golang中 string 底层是用byte字节数组存储的,并且是不可以修改的。
例如
s:="Go编程"
fmt.Println(len(s)) //输出结果应该是8因为中文字符是用3个字节存的(2+3*2=8)。
fmt.Printf("%d", len(string(rune('编')))) //经测试一个汉字确实占用3个字节,所以结果是3
如果想要获得字符个数的话,需要先转换为rune切片再使用内置的len函数
fmt.Println(len([]rune(s))) // 结果就是4了。
所以用string存储unicode的话,如果有中文,按下标是访问不到的,因为你只能得到一个byte。 要想访问中文的话,还是要用rune切片,这样就能按下表访问。
总结:
- rune 能操作任何字符
- byte 不支持中文的操作
示例:https://blog.haohtml.com/archives/14903
ft_authoradmin ft_create_time2018-03-09 11:31
ft_update_time2018-03-09 11:32
ft_update_time2018-03-09 11:32