Go学习笔记-遍历字符串
示例及坑点:
package main
import "fmt"
func main() {
var a = "Are you OK ? 雷布斯"
for i := 0; i < len(a); i++ {
fmt.Printf("%c \n", a[i])
}
}
PS E:\go_code\src\note> go run .\string_cycle.go
A
r
e
y
o
u
O
K
?
é
·
å
¸
æ
¯
如上所示,中文部分会出现乱码。原因是遍历方法是按照字节来遍历的,而一个汉字在utf-8编码中对应3个字节。
解决如下:
package main
import "fmt"
func main() {
var a = "Are you OK ? 雷布斯"
var b = []rune(a)
for i := 0; i < len(b); i++ {
fmt.Printf("%c \n", b[i])
}
}
PS E:\go_code\src\note> go run .\string_cycle.go
A
r
e
y
o
u
O
K
?
雷
布
斯
或者for-range方式遍历(按照字符方式遍历),如下:
package main
import "fmt"
func main() {
var a = "Are you OK ? 雷布斯"
for idx, val := range a {
fmt.Printf("%d=>%c \n", idx, val)
}
}
PS E:\go_code\src\note> go run .\string_cycle.go
0=>A
1=>r
2=>e
3=>
4=>y
5=>o
6=>u
7=>
8=>O
9=>K
10=>
11=>?
12=>
13=>雷
16=>布
19=>斯