Go 语言整型(整数类型)

发布于: 2020-11-10 16:46:31 作者: 犬小哈 最后修订时间: 2020-11-13 16:23:17

Go语言整型数据

在 Go 语言中,整型分为以下两个大类:

  • 有符号类型,按长度分为: int8int16int32int64
  • 无符号类型,与上面对应的分别是: uint8uint16uint32uint64

PS: 这里 unit8 就是我们熟知的 byte型,int16 对应 C 语言中的 short型,int64对应 C 语言中的 long 类型。

一、自动匹配平台的 int 和 unit

看了上面这些类型,你可能在想,这也太繁琐了,有没有一种类型,它能根据平台 CPU 机器字节大小来调整长度呢?有的,那就是:

  • 有符号类型: int
  • 无符号类型uint

这里 int 是应用最广泛的数值类型。这两种类型都有同样的大小,3264bit,但是我们不能对此做任何的假设, 因为不同的编译器即使在相同的硬件平台上可能产生不同的大小。

1.1、什么情况要使用 int 和 unit

实际应用中,切片或者 map 的元素数量均可通过 int 来表示。

但是,在二进制传输、读写文件的结构描述时,为了保证文件的结构不受不同编译目标平台的字节长度影响,不要使用 intunit

二、整数类型 uintptr

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

尽管在某些特定的运行环境下 intuintuintptr 的大小可能相等,但是它们依然是不同的类型,比如 intint32,虽然 int 类型的大小也可能是 32 bit,但是在需要把 int 类型当做 int32 类型使用的时候必须显示的对类型进行转换,反之亦然。

Go 语言中有符号整数采用 2 的补码形式表示,也就是最高 bit 位用来表示符号位,一个 n-bit 的有符号数的取值范围是从 -2(n-1) 到 2(n-1)-1。无符号整数的所有 bit 位都用于表示非负数,取值范围是 0 到 2n-1。例如,int8 类型整数的取值范围是从 -128 到 127,而 uint8 类型整数的取值范围是从 0 到 255。

三、结语

本小节中,我们介绍了 Go 语言中的整型数据类型,希望大家学完能有所收获!