在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字符。