Go语言整型(整数类型)

Go语言整型教程

Go 语言 的数值类型分为 整数类型浮点数类型复数类型。每种数值类型都有其对应的大小以及是否支持正负号的定义。

Go 语言整型是用于存放整数值的。Go 语言整数类型可以分为有符号整数和无符号整数两大类型。

Go语言有符号整数

Go 语言有符号整数,即可以支持正数也可以支持负数的形式。Go 语言有符号整数,主要包括 int 类型、int8 类型、int16 类型、int32 类型和 int64 类型。

Go 语言的 int 类型的具体大小是跟机器的 CPU 位数相关的。如果 CPU 是 32 位的,那么 int 就占 4 字节,如果 CPU 是 64 位的,那么 int 就占 8 字节。

其中 int8 类型、int16 类型、int32 类型和 int64 类型分别对应 8、16、32、64 bit 大小的有符号整数。

Unicode 字符 rune 类型是和 int32 等价的类型,通常用于表示一个 Unicode 码点。这两个名称可以互换使用。

Go语言无符号整数

Go 语言无符号整数,即只支持正数形式,不支持负数的形式。Go 语言无符号整数,主要包括 uint 类型、uint8 类型、uint16 类型、uint32 类型和 uint64 类型。

Go 语言的 uint 类型的具体大小是跟机器的 CPU 位数相关的。如果 CPU 是 32 位的,那么 uint 就占 4 字节,如果 CPU 是 64 位的,那么 uint 就占 8 字节。

其中 uint8 类型、uint16 类型、uint32 类型和 uint64 类型分别对应 8、16、32、64 bit 大小的有符号整数。

byte 类型 和 uint8 类型是等价类型,byte 类型 一般用于强调数值是一个原始的数据而不是一个小的整数。

uintptr 类型也是一种无符号的整数类型,没有指定具体的 bit 大小但是足以容纳指针。uintptr 类型只有在底层编程时才需要,特别是 Go 语言和 C 语言 函数库或操作系统接口相交互的地方。

Go语言整型取值范围

数据类型 取值范围
int8 -128 ~ 127
uint8 0 ~ 255
int16 -32768 ~ 32767
uint16 0 ~ 65535
int32 -2147483648 ~ 2147483647
uint32 0 ~ 4294967295
int64 -9223372036854775808 ~ 9223372036854775807
uint64 0 ~ 18446744073709551615

int类型和uint类型选择

在二进制传输、读写文件的结构时,为了保持文件的结构不会受到不同编译目标平台字节长度的影响,不要使用 int 类型和 uint 类型,而应该使用具体长度的整型。

如果明确该数据类型是有负数的,那么应该选择使用 int 类型。如果明确该数据类型是没有负数的,那么应该选择使用 uint 类型。

案例

整型类型

Go 语言整型分为有符号类型和无符号类型

package main import "fmt" func main() { fmt.Println("Hello 嗨客网(www.haicoder.net)") var score uint32 = 98 var temp int64 = -12 fmt.Print("Score = ", score, " Temp = ", temp) }

程序运行后,控制台输出如下:

33 golang number.png

我们定义了一个 uint32 类型的变量 score,并给其赋初值为 98。接着我们定义了一个 int64 类型的变量 temp,并给其赋初值 -12,因为 int64 可以支持正数或者负数。

无符号类型

Go 语言中的无符号类型不支持负数

package main import "fmt" func main() { fmt.Println("Hello 嗨客网(www.haicoder.net)") var score uint64 = -98 var temp int64 = -12 fmt.Print("Score = ", score, " Temp = ", temp) }

程序运行后,控制台输出如下:

34 golang number.png

我们定义了一个 uint64 类型的变量 score,因为 uint64 类型是无符号的,所以不支持负数,程序报错。

Go语言整型总结

Go 语言的数值类型分为整数类型,浮点数类型和复数类型。每种数值类型都有其对应的大小以及是否支持正负号的定义。Go 语言整数类型可以分为有符号整数和无符号整数两大类型。

Go 语言的 int 类型的具体大小是跟机器的 CPU 位数相关的。如果 CPU 是 32 位的,那么 int 就占 4 字节,如果 CPU 是 64 位的,那么 int 就占 8 字节。