int int32 int64区别

winnie123321 · 2018-09-04 11:43:35 · 19066 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2018-09-04 11:43:35 的主题,其中的信息可能已经有所发展或是发生改变。

我要定义一个数字类型的变量, 我该怎么选择??


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

19066 次点击  
加入收藏 微博
8 回复  |  直到 2020-11-01 14:50:59
jarlyyn
jarlyyn · #1 · 7年之前

根据你的变量的取值范围有多少大,以及是否会转成其他格式/在别的库里调用来决定。

qloog
qloog · #2 · 7年之前
felix328
felix328 · #3 · 7年之前

我记得int在32位机器上就是int32,在64位机器上就是int64,不知道有没有记错。超过了int的上限就用int64,不然会溢出。

qloog
qloog · #4 · 7年之前
felix328felix328 #3 回复

我记得int在32位机器上就是int32,在64位机器上就是int64,不知道有没有记错。超过了int的上限就用int64,不然会溢出。

没毛病,int 与所运行的操作系统位数有关。

jthmath
jthmath · #5 · 7年之前

一般情况下,int优先,需要明确bit数才需要int32或int64

HelloGoWorld
HelloGoWorld · #6 · 5年之前

这个类型的选择根据应用所运行的机器有关,如果确定是32位或者64位则使用相应的int32或者int64,如果不确定,使用了int类型,就是说把决定权交由应用决定,应用在运行的时候再根据机器的位数决定

zhangmingkai4315
zhangmingkai4315 · #7 · 5年之前

另外如果不需要负数,还有uint32 uint64可以选择

laotoutou
laotoutou · #8 · 4年之前
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])))
    }
}
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传