byte ,只占用 1 个字节,即 8 位,其别名为 uint8 ,表示的是 ASCII 码表中的一个字符。下面的例子分别用 byte 和 uint8 定义了变量 x 和 y 。
package main
import "fmt"
func main() {
var x byte = 65
var y uint8 = 65
fmt.Printf("x = %c\n", x) // x = A
fmt.Printf("y = %c\n", y) // y = A
}
在 ASCII 码表中,ASCII 码值 65 所对应的字符为 A 。所以上面的程序运行后都会输出字符 A 。当然,你也可以直接写成下面的形式,结果是一样的。
var x byte = 'A'
var y uint8 = 'A'
rune ,占用 4 个字节,即 32 位,其别名为 uint32 ,表示的是一个 Unicode 字符。
package main
import (
"fmt"
"unsafe"
)
func main() {
var x byte = 65
fmt.Printf("x = %c\n", x)
fmt.Printf("x 占用 %d 个字节\n", unsafe.Sizeof(x))
var y rune = 'A'
fmt.Printf("y = %c\n", y)
fmt.Printf("y 占用 %d 个字节\n", unsafe.Sizeof(y))
}
该程序运行后输出如下:
x = A
x 占用 1 个字节
y = A
y 占用 4 个字节
由此我们知道, byte 类型只能表示
var y rune = '我'
这里也许你不会注意到一个问题,那就是上面定义使用的都是 单引号 。在 Go 中,单引号和双引号是不同的, 单引号 只是用来表示 字符 ,而 双引号 表示 字符串 ,所以平时在使用的时候一定要注意定义的是字符还是字符串。
参考文献:
[1] Alan A. A. Donovan; Brian W. Kernighan, Go 程序设计语言, Translated by 李道兵, 高博, 庞向才, 金鑫鑫 and 林齐斌, 机械工业出版社, 2017.









