我要定义一个数字类型的变量, 我该怎么选择??
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
根据你的变量的取值范围有多少大,以及是否会转成其他格式/在别的库里调用来决定。
可以看这里:https://golang.google.cn/ref/spec#Numeric_types
我记得int在32位机器上就是int32,在64位机器上就是int64,不知道有没有记错。超过了int的上限就用int64,不然会溢出。
没毛病,int 与所运行的操作系统位数有关。
一般情况下,int优先,需要明确bit数才需要int32或int64
这个类型的选择根据应用所运行的机器有关,如果确定是32位或者64位则使用相应的int32或者int64,如果不确定,使用了int类型,就是说把决定权交由应用决定,应用在运行的时候再根据机器的位数决定
另外如果不需要负数,还有uint32 uint64可以选择
import ( "fmt" "unsafe" ) func main() { //b := []byte{'h', 'e', 'l', 'l', 'o'} // 1位 //b := []int32{11, 13, 12, 14} // 4位 //b := []int{11, 13, 12, 14} // 在我的机器上是8位 b := []int64{11, 13, 12, 14} // 在我的机器上是8位 for i, _ := range b { fmt.Println(uintptr(unsafe.Pointer(&b[i]))) } }
`单行代码`
根据你的变量的取值范围有多少大,以及是否会转成其他格式/在别的库里调用来决定。
可以看这里:https://golang.google.cn/ref/spec#Numeric_types
我记得int在32位机器上就是int32,在64位机器上就是int64,不知道有没有记错。超过了int的上限就用int64,不然会溢出。
没毛病,int 与所运行的操作系统位数有关。
一般情况下,int优先,需要明确bit数才需要int32或int64
这个类型的选择根据应用所运行的机器有关,如果确定是32位或者64位则使用相应的int32或者int64,如果不确定,使用了int类型,就是说把决定权交由应用决定,应用在运行的时候再根据机器的位数决定
另外如果不需要负数,还有uint32 uint64可以选择