string rune byte 的关系[zt 其实就是传统语言中的 string 与 char]
clq
浏览(574) -
2018-05-10 19:10:11 发表
编辑
关键字: golang
[2018-05-10 19:11:02 最后更新]
string rune byte 的关系[zt]
其实就是传统语言中的 string 与 char, 而 golang 中是没有 char 这个类型的,替代的是 rune 类型. 这是 golang 一个非常重要的概念。
--------------------------------------------------
http://www.golangtc.com/t/528cc004320b52227200000f
在Go当中 string底层是用byte数组存的,并且是不可以改变的。
例如 s:="Go编程" fmt.Println(len(s)) 输出结果应该是8因为中文字符是用3个字节存的。
len(string(rune('编')))的结果是3
如果想要获得我们想要的情况的话,需要先转换为rune切片再使用内置的len函数
fmt.Println(len([]rune(s)))
结果就是4了。
所以用string存储unicode的话,如果有中文,按下标是访问不到的,因为你只能得到一个byte。 要想访问中文的话,还是要用rune切片,这样就能按下表访问。
个人分类: Go语言
NEWBT官方QQ群1: 276678893
可求档连环画,漫画;询问文本处理大师等软件使用技巧;求档softhub软件下载及使用技巧.
但不可"开车",严禁国家敏感话题,不可求档涉及版权的文档软件.
验证问题说明申请入群原因即可.