整型包含几种类型:
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