Go byte&rune
1、byte
// byte is an alias for uint8 and is equivalent to uint8 in all ways. It is
// used, by convention, to distinguish byte values from 8-bit unsigned
// integer values.
type byte = uint8
通过源码观察byte的源码发现byte其实是unit8类型,其实是无符号整数类型,源码的注释的的翻译是:
字节是 uint8 的别名,在所有方面都等效于 uint8。按照惯例,它用于区分字节值和 8 位无符号整数值。
下面给出一个例子:
var b byte = 'a'
fmt.Printf("%v\n", b)
fmt.Printf("%b\n", b)
fmt.Printf("%c\n", b)
输出:
97 //原本的类型
1100001 //二进制类型
a //字符类型
2、rune类型
先看源码:
// rune is an alias for int32 and is equivalent to int32 in all ways. It is
// used, by convention, to distinguish character values from integer values.
type rune = int32
源码的注释解释是:
Rune 是 Int32 的别名,在所有方面都等同于 Int32。按照惯例,它用于区分字符值和整数值
之所以会有rune类型的出现,是因为byte类型是int8类型,不足以表示世界上所有的字符,所以才会有rune类型:
byte类型是不能用来表示汉字的
来看小例子:
var r rune = '王'
fmt.Printf("%v\n", r)
fmt.Printf("%b\n", r)
fmt.Printf("%c\n", r)
输出:
29579 //原本的类型
111001110001011 //二进制表示
王 //字符类型