作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
1.整型概述
类型 |
描述 |
uint8 |
无符号 8位整型 (0 到 255) |
uint16 |
无符号 16位整型 (0 到 65535) |
uint32 |
无符号 32位整型 (0 到 4294967295) |
uint64 |
无符号 64位整型 (0 到 18446744073709551615) |
int8 |
有符号 8位整型 (-128 到 127) |
int16 |
有符号 16位整型 (-32768 到 32767) |
int32 |
有符号 32位整型 (-2147483648 到 2147483647) |
int64 |
有符号 64位整型 (-9223372036854775808 到 9223372036854775807) |
整数就是用于存放整数值的,比如: 10,-8,9527等等。
整型分为以下三个大类:(对应的取直范围如上表所示)
有符号整数类型:int8、int16、int32、int64
无符号整型六类型:uint8、uint16、uint32、uint64
其他整数类型: int,uint,rune,byte,uintptr
其中,uint8就是我们熟知的byte型,int16对应C语言中的short型,int64对应C语言中的long型。
温馨提示:
1.Golang的整数类型,默认声明为int类型;
2.Golang程序中整型变量在使用时,遵守"保小不保大"的原则,即在保证程序正确运行下,尽量使用占用空间小的数据类型;
2. 特殊整型
类型 |
描述 |
uint |
32位操作系统上就是uint32 ,64位操作系统上就是uint64 |
int |
32位操作系统上就是int32 ,64位操作系统上就是int64 |
uintptr |
无符号整型,用于存放一个指针 |
rune |
等价int32 |
byte |
等价uint8 |
在使用int和 uint类型时,不能假定它是32位或64位的整型,而是考虑int和uint可能在不同平台上的差异。
温馨提示:
(1)获取对象的长度的内建len()函数返回的长度可以根据不同平台的字节长度进行变化;
(2)实际使用中,切片或map的元素数量等都可以用int来表示;
(3)在涉及到二进制传输、读写文件的结构描述时,为了保持文件的结构不会受到不同编译目标平台字节长度的影响,不要使用int和 uint。
3.参考案例
package main
import (
"fmt"
"unsafe"
)
func main(){
// 超出了int8存储范围,编译报错: cannot use 222 (untyped int constant) as int8 value in variable declaration (overflows)
// var n1 int8 = 222
// fmt.Println(n1)
// 超出了uint8的存储范围,编译报错: cannot use -22 (untyped int constant) as uint8 value in variable declaration (overflows)
// var n2 uint8 = -22
// fmt.Println(n2)
// Golang的整数类型,默认声明为int类型。
var n3 = 100
fmt.Printf("n3的类型是: %T\n",n3)
// 查看变量占用空间的字节大小。
fmt.Println("n3占用空间大小(字节)为:",unsafe.Sizeof(n3))
}