func test2() {
var str string = "hello 北京"
for i := 0; i < len(str); i++ {
fmt.Printf("str[%d]=%c
", i, str[i]) // 按照字节遍历, 到中文时乱码
}
/*
str[0]=h
str[1]=e
str[2]=l
str[3]=l
str[4]=o
str[5]=
str[6]=å
str[7]=
str[8]=
str[9]=ä
str[10]=º
str[11]=¬
*/
for i, c := range str {
fmt.Printf("str[%d]=%c
", i, c) // 按照字符遍历, 可以遍历中文(可以发现中文占用三个字节, 但是下标不确定了不好)
}
/*
str[0]=h
str[1]=e
str[2]=l
str[3]=l
str[4]=o
str[5]=
str[6]=北
str[9]=京
*/
str2 := []rune(str)
for i := 0; i < len(str2); i++ {
fmt.Printf("str[%d]=%c
", i, str2[i]) // 强转rune类型, 按照字符划分
}
/*
str[0]=h
str[1]=e
str[2]=l
str[3]=l
str[4]=o
str[5]=
str[6]=北
str[7]=京
*/
}
func main() {
// test1()
test2()
}