func Test1(t *testing.T){
var s="hello 你好"
fmt.Println("len(s):",len(s))
}
golang中string的底层实现是通过byte数组实现的。中文字符在unicode下是占2个字节,在utf-8下占3个字节,而golang默认编码是utf-8类型
运行结果如下图
结果为12=5+1+2*3
若我们想要得到字符串的长度,而不是字符串底层所占的字节数时应该怎么操作呢
func Test1(t *testing.T){
var s="hello 你好"
fmt.Println("len(s):",len([]rune(s)))
//golang中的unicode/utf8包提供了用utf-8获取长度的方法
fmt.Println("len(S):",utf8.RuneCountInString(s))
}
此时结果为8 :5+1+2