# 整数/Integer
整型表示数字整数,共分为两类:
- 有符号整型: 可以表示正负
- 无符号整型: 不能区分正负
整型在内存中的表示包含两个部分:
- 符号位:记录正负
- 数字位:记录数值
# 有符号整型
| 类型 | 长度(字节数) | 值范围 |
|---|---|---|
| int8 | 1 | -128 ~127 |
| int16 | 2 | -32768~32767 |
| int32 | 4 | -2147483648~2147483647 |
| int64 | 8 | -9223372036854775808~9223372036854775807 |
| int | 在 32 位平台为 4,在 64 位平台为 8 | 在 32 位平台等同于 int32,在 64 位平台等同于 int64 |
# 无符号整型
| 类型 | 长度(字节数) | 值范围 |
|---|---|---|
| uint8 | 1 | 0~255 |
| uint16 | 2 | 0~65535 |
| uint32 | 4 | 0~4294967295 |
| uint64 | 8 | 0~18446744073709551615 |
| uint | 在 32 位平台为 4,在 64 位平台为 8 | 在 32 位平台等同于 uint32,在 64 位平台等同于 uint64 |
# 定义整型
例子:定义整型
var age uint8
age = 18
var income int
income = -1000
# 转换陷阱
注意!不同类型的整型无法互相赋值,需要做类型转换。其中位数长的类型转换为位数短的类型,或者无符号的类型转换为有符号的类型时,会丢失准确性。
例子:整型类型转换
var v1 int = 24
var v2 int32
v2 = int32(v1)