go中int类型变量在不同位数的操作系统长度不一样,为什么要这么设计?
Go语言中int类型的变量在32位操作系统长度是32,64位长度是64,这样肯定会导致风险,那为什么还要这么设计?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
Go语言中int类型的变量在32位操作系统长度是32,64位长度是64,这样肯定会导致风险,那为什么还要这么设计?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(3)
不要把别的语言的类型带过来。
以 C# 为例,
int
实际是Int32
这个类型的别名。而 Go 里,
int
就是int
,是一个单独的类型。大部分场景下,作为通用的int
就能满足需求了(比如表示数组的长度、下标,在 32 位系统和 64 位系统上数组的最大长度本来就是不一样的);如果你确实需要定长的整数类型,那就直接用int32
、int64
啊,为啥非得用int
?go之父本来就是个c佬,你说呢
好像不止 Golang 会有这个问题, C语言在32位和64位中 long ,point,size_t等长度也是不一样的.
这些随着时间和硬件的升级,会发生变化, 16位机 int 还只有16位,后续32位硬件出来后,对应的编译器也都做了变化
像 go 这种,int 32位操作系统是长度32,64位长度是64,也不会有啥问题,毕竟向下兼容, 64位可以运行32位,32位可不能运行64位. 向 C 和 C++ 这种,32位的 int ,long ,long long 分别是 32,32,64.到64了分别是 32,64,64 这种才让人诧异.