在go语言中支持两种方式遍历字符串。第一种方式是以字节数组的方式遍历。例如代码:
在go语言中支持两个字符类型,一个是byte(实际上是uint8的别名),代表UTF-8字符串的单个字节的值,另一个是rune,代表单个Unicode字符。
str := "beijing,北京"
for i := 0; i < len(str); i++{
fmt.Println(i, " ", str[i])
}
输入结果为:
0 98
1 101
....
10 151
11 228
12 186
13 172
可以看出,这个字符串长度为14,尽管从直观上来说,这个字符串应该只有10个字符,这是因为每个中文字符在UTF-8中占3个字节,而不是1个字节。
第二种方式是以Unicode字符遍历,例如代码:
str := "beijing,北京"
for index, val := range str {
fmt.Println(index, " ", val)
}
输出结果为:
0 98
1 101
......
7 44
8 21271
11 20140
以Unicode字符方式遍历时,每个字符的类型是rune,而不是byte。rune类型在go语言中占用四个字节。在go语言中支持两个字符类型,一个是byte(实际上是uint8的别名),代表UTF-8字符串的单个字节的值,另一个是rune,代表单个Unicode字符。