Go语言中的整数类型_第1页
Go语言中的整数类型_第2页
Go语言中的整数类型_第3页
Go语言中的整数类型_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第第页Go语言中的整数类型

在Go语言中,整型可以细分成两个种类十个类型。

有符号整型

int8:表示8位有符号整型;其类型宽度为8位,即1字节,表示范围:-128~127。

int16:表示16位有符号整型;其类型宽度为16位,即2字节,表示范围:-32768~32767。

int32:表示32位有符号整型;其类型宽度为32位,即4字节,表示范围:-2147483648~2147483647。

int64:表示64位有符号整型;其类型宽度为64位,即8字节,表示范围:-9223372036854775808~9223372036854775807。

int:根据不同的底层平台(UnderlyingPlatf(or)m),表示32或64位整型。除非对整型的大小有特定的需求,否则你通常应该使用int表示整型。其类型宽度在32位系统下是32位,而在64位系统下是64位。表示范围:在32位系统下是-2147483648~2147483647,而在64位系统是-9223372036854775808~9223372036854775807。

packagemainimport("fmt""math""unsafe")funcmain(){varnum8int8=127varnum16int16=32767varnum32int32=math.MaxInt32varnum64int64=math.MaxInt64varnumint=math.MaxIntfmt.Printf("typeofnum8is%T,sizeofnum8is%d,num8=%dn",num8,unsafe.Sizeof(num8),num8)fmt.Printf("typeofnum16is%T,sizeofnum16is%d,num16=%dn",num16,unsafe.Sizeof(num16),num16)fmt.Printf("typeofnum32is%T,sizeofnum32is%d,num32=%dn",num32,unsafe.Sizeof(num32),num32)fmt.Printf("typeofnum64is%T,sizeofnum64is%d,num64=%dn",num64,unsafe.Sizeof(num64),num64)fmt.Printf("typeofnumis%T,sizeofnumis%d,num=%dn",num,unsafe.Sizeof(num),num)}其中,程序中的Printf方法,可以使用%T格式说明符(FormatSpecifier)打印出变量的类型。而unsafe包的Sizeof函数接收变量并返回它的字节大小。使用unsafe包可能会带来可移植性问题,这里只是作为演示使用。如果你将num8的值改为128运行后就会报错,因为int8类型的最大值为127。该程序运行后输出如下:

typeofnum8isint8,sizeofnum8is1,num8=127typeofnum16isint16,sizeofnum16is2,num16=32767typeofnum32isint32,sizeofnum32is4,num32=2147483647typeofnum64isint64,sizeofnum64is8,num64=9223372036854775807typeofnumisint,sizeofnumis8,num=9223372036854775807无符号整型

uint8:表示8位无符号整型;其类型宽度为8位,即1字节,表示范围:0~255。

uint16:表示16位无符号整型;其类型宽度为16位,即2字节,表示范围:0~65535。

uint32:表示32位无符号整型;其类型宽度为32位,即4字节,表示范围:0~4294967295。

uint64:表示64位无符号整型;其类型宽度为64位,即8字节,表示范围:0~18446744073709551615。

uint:根据不同的底层平台,表示32或64位无符号整型。其类型宽度在32位系统下是32位,而在64位系统下是64位。表示范围在32位系统下是0~4294967295,而在64位系统是0~18446744073709551615。

packagemainimport("fmt""math""unsafe")funcmain(){varnum8uint8=128varnum16uint16=32768varnum32uint32=math.MaxUint32varnum64uint64=math.MaxUint64varnumuint=math.MaxUintfmt.Printf("typeofnum8is%T,sizeofnum8is%d,num8=%dn",num8,unsafe.Sizeof(num8),num8)fmt.Printf("typeofnum16is%T,sizeofnum16is%d,num16=%dn",num16,unsafe.Sizeof(num16),num16)fmt.Printf("typeofnum32is%T,sizeofnum32is%d,num32=%dn",num32,unsafe.Sizeof(num32),num32)fmt.Printf("typeofnum64is%T,sizeofnum64is%d,num64=%dn",num64,unsafe.Sizeof(num64),num64)fmt.Printf("typeofnumis%T,sizeofnumis%d,num=%dn",num,unsafe.Sizeof(num),num)}该程序运行结果如下:

typeofnum8isuint8,sizeofnum8is1,num8=128typeofnum16isuint16,sizeofnum16is2,num16=32768typeofnum32isuint32,sizeofnum32is4,num32=4294967295typeofnum64isuint64,sizeofnum64is8,num64=18446744073709551615typeofnumisuint,sizeofnumis8,num=18446744073709551615uint无符号整型和int有符号整型的区别就在于一个u,有u的就表示无符号,没有u的就表示有符号。

接下来讲讲它们表示范围的差别,例如int8和uint8,它们的类型宽度都为8位,能表示的数值个数为,对于无符号整数来说,表示的都是正数,所以表示范围为0~255,一共256个数。而对于有符号整数来说,就得借一位来表示符号,所以表示范围为-128~127,刚好也是256个数。

对于int8,int16等这些类型后面有跟一个数值的类型来说,它们能表示的数值个数是固定的。而对于int,uint这两个没有指定其大小的类型,在32位系统和64位系统下的大小是不同的。所以,在有的时候例如在二进制传输、读写文件的结构描述(为了保持文件的结构不会受到不同编译目标平台字节长度的影响)等情况下,使用更加精确的int32和int64是更好的。

不同进制的表示方法

一般我们习惯使用十进制表示法,当然,有时候我们也会使用其他进制表示一个整数。在Go中,以0b或0B开头的数表示二进制,以0o或0O开头的数表示八进制,以0x或0X开头的数表示十六进制。

packagemainimport("fmt")funcmain(){varnum2int=0b1100011varnum8int=0o143varnum10int=99varnum16int=0X63fmt.Println("num2=",num2)fmt.Println("num8=",num8)fmt.Println("num10=",num10)fmt.Println("num16=",num16)}该程序的四个数都表示十进制的99,程序运行后输出如下:

num2=99num8=99num10=99num16=99当然,你也可以使用fmt包的格式化输出相应的进制数。

packagemainimport("fmt")funcmain(){varnum2int=0b1100011varnum8int=0o143varnum10int=99varnum16int=0X63fmt.Printf("2进制数num2=%bn",num2)fmt.Printf("8进制数num8=%on",num8)fmt.Printf("1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论