- 整形
- 固定字节数整形:与操作系统无关
- int 和 uint 在 32 位操作系统上,它们均使用 32 位(4 个字节),在 64 位操作系统上,它们均使用 64 位(8 个字节)。
- uintptr 存放指针
- 指定字节数整形
- int8:用8个位表示,负数最高位为1,正数最高位0,所以最小负数是2的8次方,也就是-128,最大正数是2的0次方、2的0次方。。。2的6次方之和,结果是127
- int16:用16个位表示,负数最高位为1,正数最高位0,同理可算范围是:-32768 -> 3276
- int32:用32个位表示,负数最高位为1,正数最高位0,同理可算范围是:-2,147,483,648 -> 2,147,483,647
- int64:用64个位表示,负数最高位为1,正数最高位0,同理可算范围是:-9,223,372,036,854,775,808 -> 9,223,372,036,854,775,807
- 无符号指定字节数整形
- uint8:最高1也表示是正数,所以最大值是2的8次方减去1,结果是255
- uint16:最高1也表示是正数,所以最大值是2的16次方减去1,结果是65535
- uint32:最高1也表示是正数,所以最大值是2的32次方减去1,结果是4294967295
- uint64:最高1也表示是正数,所以最大值是2的64次方减去1,结果是18446744073
- 整型运算
- 不同的整型类型不能运算
- 代码:
var i1 int32 = 100
var i2 int64 = 200
//int32和int64不同类型
fmt.Printf("i1+i2=%d\n", i1+i2) - 结果输出:
.\main.go:31:29: invalid operation: i1 + i2 (mismatched types int32 and int64) 编译报错说是不同类型
- 代码:
- 强制转换方可运算
- 代码:
var i1 int32 = 100
var i2 int64 = 200
//int32和int64不同类型
fmt.Printf("i1+i2=%d\n", int64(i1)+i2) - 结果输出:
i1+i2=300
- 代码:
- 不同的整型类型不能运算