下面x,y是什么类型
var x = 23.2
var y = 23
package main
import (
"fmt"
"unsafe"
)
func main() {
var x = 23.2
fmt.Println(x)
fmt.Println(unsafe.Sizeof(x))
t(x)
var y = 23
fmt.Println(y)
fmt.Println(unsafe.Sizeof(y))
t(y)
}
func t(i interface{}) { //函数t有一个参数i
switch i.(type) { //多选语句switch
case string:
//是字符时做的事情
fmt.Println("this is a string")
break
case int:
//是整数时做的事情
fmt.Println("this is a int")
break
case bool:
fmt.Println("this is a bool")
break
case int32:
fmt.Println("this is a int32")
break
case float32:
fmt.Println("this is a float32")
break
case float64:
fmt.Println("this is a float64")
break
default:
fmt.Println("this is a default")
}
return
}
结果是这样的
显然:如果不声明类型的话,默认的类型都是占用64位(如果机器是32位的话,默认是32位)
整形默认是 64位的int, 浮点型默认是64位的float64
image.png记忆方法;
1.位数,机器的cpu位数 64位机器占8字节,那么默认就是8字节的类型
2.int (机器位数有关)
3.float+(32/64)机器位数有关
4.int + (8/16/32/64) 不参与默认设置
5int32 或者rune 参与 字符的默认
image.pngcase中同时出现int32 和 rune会报错,也就是说他两是一样的
网友评论