天天看点

Go 变量 整数类型

整形

每种数值类型都决定了对应的大小范围和是否支持正负符号。

类型名 字节宽度 取值范围
int 与平台有关 32 位系统 4 字节,64 位系统 8 字节 有符号整型
uint 与平台有关 32 位 系统 4 字节,64 位 系统 8 字节 无符号整形
int8 1 字节 用 8 位表示的有符号整型 取值范围为:[-128, 127]
int16 2 字节 用 16 位表示的有符号整型 取值范围为:[-32768,32767]
int32 4 字节 用 32 位表示的有符号整型,取值范围为:[-2147483648,2147483647]
int64 8 字节 用 64 位表示的有符号整型,取值范围为:[-9223372036854775808,9223372036854775807]
uint8 1 字节 用 8 位表示的无符号整型,取值范围为:[0,255]
uint16 2 字节 用 16 位表示的无符号整型,取值范围为:[0,65535]
uint32 4 字节 用 32 位表示的无符号整型,取值范围为:[0,4294967295]
uint64 8 字节 用 64 位表示的无符号整型,取值范围为:[0,18446744073709551615]
uintptr 与平台有关 32 位系统 4 字节,64 位系统 8 字节指针值的无符号整型

 整数的类型

这里有int8、int16、int32和int64四种截然不同大小的有符号整形数类型,分别对应8、16、32、64bit大小的有符号整形数,与此对应的是uint8、 uint16、uint32和uint64四种无符号整形数类型。 

Go 变量 整数类型

占用的存储空间不一样,直接导致的是表示数的范围不一样。

占有的字节里面其中第一个比特是用来表示符号,剩下的才用来表示数本身的值。-128其实就是-2^7 - 2^7 -1

Go 变量 整数类型

那么它的第一位可以用来表示数值,也就是表示数本身。2^8 -1 =255

在做开发的时候要根据你表示数的范围来选取合适的数据类型,有符号或者无符号的。

Go 变量 整数类型

int表示几个字节,和系统有关系,比如32位的系统,那么占4个字节,如果是64位系统那么占8个字节。

rune表示unicode码,用其处理带有中文的字符串特别有用。

byte存储当额字母的时候选用byte来存储。

整型的使用细节

1)Golang各整数类型分∶有符号和无符号,int uint 的大小和系统有关。

2)Golang的整型默认声明为 int 型

3)如何在程序查看某个变量的字节大小和数据类型

d := 10
  fmt.Printf("%T,%d",d,unsafe.Sizeof(d))]]]


int,8      

4)Golang程序中整型变量在使用时,遵守保小不保大的原则,即∶在保证程序正

确运行下,尽量使用占用空间小的数据类型。【如∶年龄】

5)bit∶计算机中的最小存储单位。byte∶计算机中基本存储单元。【二进制再详细说】

一个byte等于8个bit。

 扩展

  • 栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中(new 出来的对象)
  • 堆: 存放用new产生的数据
  • 值类型: 这段内存里面存储的是基本类型的数据, 比如 "a", 10, 0.01
  • 引用类型: 这段内存里面存储的是一个地址, 比如 0xc00011e370 0xc00011e380