程序员求职经验分享与学习资料整理平台

网站首页 > 文章精选 正文

Go语言基础—整型

balukai 2025-05-16 11:44:42 文章精选 3 ℃


整型概述

  • 在Go语言中可以进行数学运算的的类型分为整型和浮点型
  • 所有的整数数字存储到整型中就可以进行数学运算

整型和整型运算的结果还是整型(5/2=2)

都是整型,但是int8和int16之间不可以进行运算,必须先进行类型转换


  • 整型分为有符号整型和无符号整型

有符号整型,有正整数和负整数,其二进制最高位表示符号,0为正数,1为负数,int和intx为有符号整型

//int8 举例
0000 0010 = 2         //起始数字0,表示正数,数值为  1X2^1=2
1000 0010 = -2       //起始数字1,表示负数 ,数值为   -1X2^1=-2

无符号整型,只能取大于等于0的整数,其二进制最高位表示数字,无特殊含义。unit和unitx为无符号整型

//uint8 举例
0000 0010 = 2         //数值为 1X2^1=2
1000 0010 = 130      //数值为  1X2^7+1X2^1=128+2=130


整型取值范围和作用

有符号整数统一公式为

-2的n-1次方~2的n-1次方减一

无符号整数统一公式为

0到2的n次方减一

类型

取值范围

int8

[-128,127] //有符号整型,[2^(8-1), 2^(8-1) - 1],以下有符号整型同样计算方法

int16

[-32768,32767]

int32

[-2147483648,2147483647],Go语言中没有字符类型,所有字符都使用int32存储

int64

[-9223372036854775808,9223372036854775807]

int

受限于计算机系统,系统多少位,int就是多少位

uint8

[0,255] //无符号整型,[0, 2^8 - 1],以下无符号整型同样计算方法

uint16

[0,65535]

uint32

[0,4294967295]

uint64

[0,18446744073709551615]

uint

受限于计算机系统,系统是多少位,u

rune

与int32类似,常用在获取值的Unicode码

byte

与int8类似,强调值为原始数据,一个字节占用8个二进制

uintptr

大小不确定,类型取决于底层编程


类型转换

  • Go语言是静态类型语言,并且不具备低精度自动转换向高精度自动转换功能,所以不同类型变量之间相互赋值需要进行类型转换
  • 示例:
func main() {
	//声明3个类型变量
	var    a int = 1
	var b int32 = 2
	var c int64 = 3
	fmt.Printf("%T,%T,%T\n",a, b, c)   //输出:int,int32,int64

	//不同类型之间不能进行数学运算,否则报错,如下所示
	//d := a + b
	//fmt.Println(d)    //示例代码报错:invalid operation: a + b (mismatched types int and int32)


	//把int32转换为int
	a = int(b)		//将b(原int32)转换为int类型,并且赋值给a(下述示例类似)
	fmt.Println(a,b)  //输出2,2

	//把int64转换成int32
	b = int32(c)
	fmt.Println(b, c)

	//把int转换为int64
	c = int64(a)
	fmt.Println(a, c)
}


不同进制整数

  • 支持八进制、十进制、十六进制数字创建整型,最后由系统转换为十进制
  • 不支持二进制值
func main() {
   //默认表示十进制
   d := 17

   //0开头表示八进制
   o := 021

   //0x开头表示十六进制
   x := 0x11

   //e2表示10的2次方
   e := 11e2

   //输出
   fmt.Println(d, o, x, e)

   //把变量d中的内容转换为二进制
   b := fmt.Sprintf("%b", d)
   fmt.Println(b)
}
最近发表
标签列表