6 Go 整型数据类型使用
Go语言的整型数据类型包含以下几种:
有符号:int,int8,int16,int32,int64,rune
无符号:uint,uint8,uint16,uint32,uint64,byte
详细情况如下:
数据类型 | 有无符号 | 占用存储 | 取值范围 |
int8 | 有符号 | 占1字节,8位 | 取值范围:(-2的7次方)-128~127(2的7次方-1) |
int16 | 有符号 | 占2字节,16位 | 取值范围:(-2的15次方)-32768~32767(2的15次方-1) |
int32 | 有符号 | 占4字节,32位 | 取值范围:(-2的31次方)-2147483648~2147483647(2的31次方-1) |
int64
|
有符号 | 占8字节,64位 | 取值范围:(-2的63次方)-9223372036854775808~9223372036854775807(2的63次方-1) |
uint8 | 无符号 | 占1字节,8位 | 取值范围:0~255(2的8次方-1) |
uint16 | 无符号 | 占2字节,16位 | 取值范围:0~65535(2的16次方*-1) |
uint32 | 无符号 | 占4字节,32位 | 取值范围:0~4294967295(2的32次方-1) |
uint64 | 无符号 | 占8字节,64位 | 取值范围:0~18446744073709551615(2的64次方-1) |
int | 有符号 |
32位系统占4字节,32位 64位系统占8字节,64位 |
GO语言整型默认数据类型 取值范围:(-2的31次方)-2147483648~2147483647(2的31次方-1) 取值范围:(-2的63次方)-9223372036854775808~9223372036854775807(2的63次方-1) |
uint | 无符号 |
32位系统占4字节,32位 64位系统占8字节,64位 |
取值范围:0~4294967295(2的32次方-1) 取值范围:0~18446744073709551615(2的64次方-1) |
rune | 有符号 | 占4字节,32位 |
取值范围:(-2的31次方)-2147483648~2147483647(2的31次方-1) 等价int32,表示一个Uincode值 |
byte | 无符号 | 占1字节,8位 |
取值范围:0~255(2的8次方-1) 等价uint8,存储非汉字字符时使用byte |
1 package main 2 3 // 一次引用多个包 4 import ( 5 "fmt" 6 "unsafe" 7 ) 8 9 func main() { 10 // Go语言的整型如下: 11 12 // 有符号的整型 13 // int8 占1字节,8位 有符号 取值范围:(-2的7次方)-128~127(2的7次方-1) 14 // int16 占2字节,16位 有符号 取值范围:(-2的15次方)-32768~32767(2的15次方-1) 15 // int32 占4字节,32位 有符号 取值范围:(-2的31次方)-2147483648~2147483647(2的31次方-1) 16 // int64 占8字节,64位 有符号 取值范围:(-2的63次方)-9223372036854775808~9223372036854775807(2的63次方-1) 17 var i8 int8 = -128 18 // var i8 int8 = -129 // cannot use -129 (untyped int constant) as int8 value in variable declaration (overflows) 19 // var i8 int8 = 128 // cannot use 128 (untyped int constant) as int8 value in variable declaration (overflows) 20 var i16 int16 = -32768 21 // var i16 int16 = -32769 // cannot use -32769 (untyped int constant) as int16 value in variable declaration (overflows) 22 var i32 int32 = 2147483647 23 // var i32 int32 = 2147483648 // cannot use 2147483648 (untyped int constant) as int32 value in variable declaration (overflows) 24 var i64 int64 = 9223372036854775807 25 // var i64 int64 = 9223372036854775808 // cannot use 9223372036854775808 (untyped int constant) as int64 value in variable declaration (overflows) 26 fmt.Println("i8=", i8) // i8= -127 27 fmt.Println("i16=", i16) // i16= 128 28 fmt.Println("i32=", i32) // i32= 2147483647 29 fmt.Println("i64=", i64) // i64= 2147483648 30 fmt.Println("") 31 32 // 无符号的整型 33 // uint8 占1字节,8位 无符号 取值范围:0~255(2的8次方-1) 34 // uint16 占2字节,16位 无符号 取值范围:0~65535(2的16次方*-1) 35 // uint32 占4字节,32位 无符号 取值范围:0~4294967295(2的32次方-1) 36 // uint64 占8字节,64位 无符号 取值范围:0~18446744073709551615(2的64次方-1) 37 var ui8 uint8 = 255 38 // var ui8 uint8 = 256 // cannot use 256 (untyped int constant) as uint8 value in variable declaration (overflows) 39 var ui16 uint16 = 65535 40 // var ui16 uint16 = 65536 // cannot use 65536 (untyped int constant) as uint16 value in variable declaration (overflows) 41 var ui32 uint32 = 4294967295 42 // var ui32 uint32 = 4294967296 // cannot use 4294967296 (untyped int constant) as uint32 value in variable declaration (overflows) 43 var ui64 uint64 = 18446744073709551615 44 // var ui64 uint64 = 18446744073709551616 // cannot use 18446744073709551616 (untyped int constant) as uint64 value in variable declaration (overflows) 45 fmt.Println("ui8=", ui8) // ui8= 255 46 fmt.Println("ui16=", ui16) // ui16= 65535 47 fmt.Println("ui32=", ui32) // ui32= 4294967295 48 fmt.Println("ui64=", ui64) // ui64= 18446744073709551615 49 fmt.Println("") 50 51 // 其他常用整型int uint rune byte 52 // int 有符号 32位系统4字节,32位 取值范围:(-2的31次方)-2147483648~2147483647(2的31次方-1) 53 // 64位系统8字节,64位 取值范围:(-2的63次方)-9223372036854775808~9223372036854775807(2的63次方-1) 54 // uint 无符号 32位系统4字节,32位 取值范围:0~4294967295(2的32次方-1) 55 // 64位系统8字节,64位 取值范围:0~18446744073709551615(2的64次方-1) 56 // rune 有符号 4字节,32位 取值范围:(-2的31次方)-2147483648~2147483647(2的31次方-1),等价int32,表示一个Uincode值 57 // byte 无符号 1字节,8位 取值范围:0~255(2的8次方-1),等价uint8,存储非汉字字符时使用byte 58 var i int = 9223372036854775807 59 // var i int = 9223372036854775808 // cannot use 9223372036854775808 (untyped int constant) as int value in variable declaration (overflows) 60 var ui uint = 18446744073709551615 61 // var ui uint = 18446744073709551616 // cannot use 18446744073709551616 (untyped int constant) as uint value in variable declaration (overflows) 62 var ru rune = 2147483647 63 // var ru rune = 2147483648 // cannot use 2147483648 (untyped int constant) as rune value in variable declaration (overflows) 64 var b byte = 255 65 // var b byte = 256 // cannot use 256 (untyped int constant) as byte value in variable declaration (overflows) 66 fmt.Println("i=", i) // i= 9223372036854775807 67 fmt.Println("ui=", ui) // ui= 18446744073709551615 68 fmt.Println("ru=", ru) // ru= 2147483647 69 fmt.Println("b=", b) // b= 255 70 fmt.Println("") 71 72 // Go语言的整型注意事项: 73 // 1 整型分有符号和无符号两种,其中int和uint的存储大小跟系统有关; 74 // 2 整型的默认类型为int 75 // 3 Go语言使用整型类型时,在满足使用范围的前提下尽量选择占用存储空间更小的数据类型; 76 // 4 bit是计算机中最小的存储单位,byte是计算机中基本存储单元,1 byte = 8 bit; 77 // 5 Go语言如何查看变量的字节大小和数据类型,如下 78 var unknownInt int64 = 123 79 fmt.Printf("变量unknownInt占用%d个字节,类型为%T", unsafe.Sizeof(unknownInt), unknownInt) 80 }
Go语言整型注意事项:
1 整型分有符号和无符号两种,其中int和uint的存储大小跟系统有关;
2 整型的默认类型为int
3 Go语言使用整型类型时,在满足使用范围的前提下尽量选择占用存储空间更小的数据类型;
4 bit是计算机中最小的存储单位,byte是计算机中基本存储单元,1 byte = 8 bit;
5 Go语言如何查看变量的字节大小和数据类型,如下
var unknownInt int64 = 123 fmt.Printf("变量unknownInt占用%d个字节,类型为%T", unsafe.Sizeof(unknownInt), unknownInt)
变量unknownInt占用8个字节,类型为int64
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具