Go 中的中文采用 UTF-8 编码,因此逐个遍历字符时必须采用 for-each 形式:
package main import "fmt" func main() { printStr("hello") fmt.Println() fmt.Println() printStr("中国人") } func printStr(s string) { fmt.Println("str: " + s) for _, v := range s { fmt.Printf("0x%x %c, ", v, v) } fmt.Println() for i := 0; i < len(s); i++ { fmt.Printf("0x%x, ", s[i]) } }
输出结果为:
str: hello 0x68 h, 0x65 e, 0x6c l, 0x6c l, 0x6f o, 0x68, 0x65, 0x6c, 0x6c, 0x6f, str: 中国人 0x4e2d 中, 0x56fd 国, 0x4eba 人, 0xe4, 0xb8, 0xad, 0xe5, 0x9b, 0xbd, 0xe4, 0xba, 0xba,