为什么要给 “字符” 打上双引号?因为 GoLang 中不存在字符这个数据类型。GoLang 里的 “字符” 本质上是两种整形 :byte(=uint8)
rune(=int32)
GoLang 源码里对于 byte
和 rune
的定义是这样的:
type byte = uint8
type rune = int32
也就是说,对 uint8
和 int32
各起了别名。
以下是测试代码:
s := "1"
fmt.Printf("%T\n", '#')
fmt.Printf("%T\n", s[0])
for _, x := range s {
fmt.Printf("%T\n", x)
}
for _, x := range []byte(s) {
fmt.Printf("%T\n", x)
}
for _, x := range []rune(s) {
fmt.Printf("%T\n", x)
}
输出
int32
uint8
int32
uint8
int32
推荐阅读博客:08 Go字符串详解