rune相当于go的char
func main() {
s := "Good我想要吃饭!"
fmt.Println(len(s))
}
运行结果如下:
s的长度是20,这个20是怎么出来的?
func main() {
s := "Good我想要吃饭!"
fmt.Println(len(s))
for _,b := range []byte(s){
fmt.Printf("%X ",b)
}
fmt.Println()
}
运行结果如下:
"Good我想要吃饭!"中的Good以及最后的!是ASCII,中文每个汉字对应3个字节,这就是utf-8编码
func main() {
s := "Good我想要吃饭!"
fmt.Println(len(s))
for _,b := range []byte(s){
fmt.Printf("%X ",b)
}
fmt.Println()
for i,ch := range s{ // ch is a rune(int32)
fmt.Printf("(%d %X) ",i,ch)
}
fmt.Println()
}
运行结果如下:
i是从第几个字节开始的,ch就是一个rune类型,将utf-8转换成了Unicode