Golang数据类型–整型

整型包含几种类型:

byte、int8、int16、int32、int64、int、uint、uint8、uint16、uint32、uint64、uintptr

byte类型占1个字节(8位)

int8类型占1个字节(8位),声明的类型后面带数字的表示的是类型的长度,16表示占16位,也就是2个字节,依次类推。

类型定义:

package main

import "fmt"

func main() {
	var ivar int = 10
	fmt.Println("int:",ivar)
}

这里定义的是一个int类型,int是整型的默认声明类型

var ivar int = 10 这里int也可以省略,写作var ivar = 10因为go首先根据赋值10,自动推断变量ivar的类型是整型,然后go的整型默认是定义位int的。

我们可以用类型断言来判断ivar的类型

package main

import "fmt"

func main() {
	var ivar = 10
	fmt.Println("int:",ivar)
	i := interface{}(ivar).(int)
	fmt.Println(i)

}

输出结果:

int: 10
10

结果中的第二行是10,表示ivar的类型是int,因为golang中的类型断言如果成立,那么就把当前变量转位判断的类型,并返回转换后的结果,所以就看到了结果输出为10,如果不成立,那么我们看看效果:

package main

import "fmt"

func main() {
	var ivar = 10
	fmt.Println("int:",ivar)
	i := interface{}(ivar).(int8)
	fmt.Println(i)

}

我们把判断类型修改为int8,结果输出:

int: 10
panic: interface conversion: interface {} is int, not int8

goroutine 1 [running]:
main.main()
	.../src/st.go:8 +0xd1

第二个输出结果报错了,明确而说了:panic: interface conversion: interface {} is int, not int8

也就是类型不是int8