go06 整数
Go 语言里的整数类型
Go 提供了 10 种整数类型:
-
不可以存小数部分
-
范围有限
-
通常根据数值范围来选取整数类型
5 种整数类型是有符号的
- 能表示正数、0、负数
5 种整数类型是无符号的
- 能表示正数、0
例 1:
- 最常用的整数类型是 int:
- 无符号整数类型是 uint:
例 2:使用类型推断
8 种整数类型
整数类型,包括有符号和无符号的,实际上一共是 8 种类型:
-
他们的取值范围各不相同。
-
与架构无关
int 和 uint
而 int 和 uint 是针对目标设备优化的类型:
-
在树莓派 2、比较老的移动设备上,int 和 uint 都是 32 位的。
-
在比较新的计算机上,int 和 uint 都是 64 位的。
虽然在某些设备上 int 可以看作是 int32,在某些设备上 int 可以看作是 int64,但它们其实是 3 种不同的类型。
int 并不是其它类型的别名,uint 同理。
打印数据类型
在 Printf 里使用 %T 就可以打印出数据的类型。
uint8
uint8 可以用来表示 8 位的颜色(红绿蓝:0-255)。
为什么不使用 int ?
-
uint8 的取值范围正好合适,而 int 则多出来几十亿不合理的数。
-
如果很多颜色数据连续存储,例如未被压缩的图片,那么使用uint8 可以节省很多内存。
十六进制表示法
Go 语言里,在数前面加上 0x 前缀,就可以用十六进制的形式来表示数值。
打印十六进制
打印十六进制的数,使用 %x 格式化动词:
也可以指定最小宽度和填充:
整数环绕
所有的整数类型都有一个取值范围,超出这个范围,就会发生“环绕”。
打印每个 bit
使用 %b 格式化动词。
整数类型的最大、最小值
math 包里,为与架构无关的整数类型,定义了最大、最小值常量:
而 int 和 uint 没有定义最大值最小值,因为它们可能是 32 或 64 位的。