今天看golang代码看到一个单词 rune ,熟悉而陌生。之前学习go并没有过多注意这个“神秘符号”。 rune在golang中是int32的别名,在各个方面都与int32相同。 被用来区分字符值和整数值。 做几个小测试
s:="hello你好"
fmt.Println(len(s))//输出长度为11
fmt.Println(len([]rune(s)))//输出长度为7
s="你好"
fmt.Println(len(s))//输出长度为6
fmt.Println(len([]rune(s)))//输出长度为2
s="你"
fmt.Println([]byte(s))//输出长度为6
fmt.Println(rune('你'))//输出20320
通过上述代码可以将rune理解为 一个 可以表示unicode 编码的值int 的值,称为码点(code point)。只不过go语言把这个码点抽象为rune。 想深入了解 可以点击 https://blog.golang.org/strings。