用于存放整数值,分为有符号整型和无符号整型两大类。
一、Go 语言中的整型有以下几种:
- 有符号: int、int8、int16、int32、int64
- 无符号版本 uint、uint8、uint16、uint32、uint64,
- byte: uint8 的别名,表示一个字节,占用1个字节。当存储字符时可选择此类型
- rune: int32 的别名,表示一个 Unicode 码点。和int32一样,占用4个字节,可以表示所有 Unicode 字符
二、整型的默认类型
- 整型的默认类型是 int,大小取决于平台(32 位平台为 32 位,64 位平台为 64 位)。
三、整型的表示方式
整型可以使用十进制、二进制、八进制和十六进制表示
- 二进制:以 0b 或 0B 开头,例如:0b11111111(二进制)、0B11111111(二进制)。
- 八进制:以 0o 或 0O 开头,例如:0o377(八进制)、0O377(八进制)。
- 十六进制:以 0x 或 0X 开头,例如:0xFF(十六进制)
- 十进制:例如:255(十进制)
四、整型的零值
- 整型的零值为 0。
五、获取整型的字节数和类型
- 使用 fmt.Printf() 函数配合 %d 格式化动词来获取变量占用的字节数
- 使用 fmt.Printf() 函数配合 %T 格式化动词来获取变量的类型。
六、整型的类型、数值范围、占用存储空间如下:
- int8: -128 到 127 (占用1个字节)
- uint8: 0 到 255 (占用1个字节)
- int16: -32768 到 32767 (占用2个字节)
- uint16: 0 到 65535 (占用2个字节)
- int32: -2147483648 到 2147483647 (占用4个字节)
- uint32: 0 到 4294967295 (占用4个字节)
- int64: -9223372036854775808 到 9223372036854775807 (占用8个字节)
- uint64: 0 到 18446744073709551615 (占用8个字节)
- int: 根据平台不同,可能是 int32 或 int64,32位系统占用4个字节,64位系统占用8个字节
- uint: 根据平台不同,可能是 uint32 或 uint64,32位系统占用4个字节,64位系统占用8个字节
- rune: int32 的别名,表示一个 Unicode 码点。和int32一样,占用4个字节,可以表示所有 Unicode 字符
- byte: uint8 的别名,表示一个字节,占用1个字节。当存储字符时可选择此类型
七、整型的使用细节:
- 整数类型分为有符号和无符号,int uint的大小和系统有关
- 整型变量的默认类型为 int,浮点型变量默认类型为 float64
- 整型变量的零值为 0,浮点型的零值为 0.0,布尔型的零值为 false,字符串的零值为 ""
- 可以使用fmt.Printf()函数配合%T格式化动词来获取变量的类型,使用fmt.Printf()函数配合%d格式化动词来获取变量占用的字节数
- 程序中整型变量在使用时,遵循保小不保大的原则,尽量使用占用空间较小的类型来存储数据,以节省内存和提高性能
- bit 是计算机的最小存储单位。byte是计算机的基本存储单位,1 byte = 8 bit。整型的大小通常以 byte 为单位来描述,例如 int32 占用 4 byte,即 32 bit。
- 整型可以进行算术运算、比较运算和位运算。
- 整型之间可以进行类型转换,但需要显式转换,例如:var i int = 100; var f float64 = float64(i)。
- 整型的溢出行为:当一个整型变量的值超过其类型的最大值或最小值时,会发生溢出,结果会回绕到该类型的最小值或最大值。例如:var i int8 = 127; i++ 后 i 的值将变为 -128。
package main
import (
"fmt"
"unsafe"
)
func main() {
// 1、定义一个整型变量
var i int = 100
fmt.Printf("i 的类型是 %T\n", i)
fmt.Printf("i 占用的字节数是 %d\n", unsafe.Sizeof(i))
// 2、如果定义的变量类型是 int8,且赋值超过了 int8 的范围,就会发生溢出
// var i8 int8 = 888 // int8 的范围是 -128 到 127,赋值 888 会发生溢出
// fmt.Printf("i8 的类型是%T\n", i8)
// fmt.Printf("i8 占用的字节数为%d\n", unsafe.Sizeof(i8))
// 3、整数变量的默认类型是 int
var n1 = 11
fmt.Printf("n1 的类型是 %T\n", n1) // n1 的类型是 int
fmt.Printf("n1 占用的字节数是%d\n", unsafe.Sizeof(n1)) // n1 占用的字节数是 8(在 64 位系统上)
// 4、整数的表示方式:十进制、二进制、八进制、十六进制
var dec int = 255 // 十进制
var bin int = 0b11111111 // 二进制
var oct int = 0o377 // 八进制
var hex int = 0xFF // 十六进制
fmt.Println("十进制 dec =", dec)
fmt.Println("二进制 bin =", bin)
fmt.Println("八进制 oct =", oct)
fmt.Println("十六进制 hex =", hex)
// 5、整型的零值为 0
var n2 int
fmt.Println("整型 n2 =", n2) // 整型 n2 = 0
// 6、整型变量在使用时,遵循保小不保大的原则,尽量使用占用空间较小的类型来存储数据,以节省内存和提高性能
var age uint8 = 30 // 使用 uint8 存储年龄,节省内存
fmt.Printf("age 的类型是 %T\n", age)
fmt.Printf("age 占用的字节数是 %d\n", unsafe.Sizeof(age))
}