在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
参考:https://www.jianshu.com/p/4fbf529926ca rune是用来区分字符值和整数值的
举例说明: package main import ( "fmt" ) func main() { str := "你好 world" fmt.Printf("len(str):%d\n", len(str)) //返回len(str):12 } 返回值为12是因为中文字符在unicode下占2个字节,在utf-8编码下占3个字节,而golang默认编码正好是utf-8。 所以上面例子中的"你好"占据了六个字节 但是其实我们期望得到的结果是8,即不以字节数来计算长度,而是以字符数来计算长度 解决的办法就是将该string转成rune类型,rune类型为int32,即4个字节,能够很好地将utf-8编码下三字节长度的中文字符保存进来,这样就能够得到长度为8的值了 package main import ( "fmt" ) func main() { str := "你好 world" fmt.Printf("len(str):%d\n", len(str)) //返回len(str):12 fmt.Printf("len(rune(str)):%d\n", len([]rune(str))) //len(rune(str)):8 } 同理可知,其实byte也是为了解决字符的问题,只是它是用来解决ascii字符的,所以长度短一些,为int8
|
请发表评论