go语言如何声明切片(Go语言基础整型)
整型概述
- 在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)
}
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com