go中int类型变量在不同位数的操作系统长度不一样,为什么要这么设计?

发布于 2022-09-12 14:04:28 字数 64 浏览 25 评论 0

Go语言中int类型的变量在32位操作系统长度是32,64位长度是64,这样肯定会导致风险,那为什么还要这么设计?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

千と千尋 2022-09-19 14:04:28

不要把别的语言的类型带过来。

以 C# 为例,int 实际是 Int32 这个类型的别名。

而 Go 里,int 就是 int,是一个单独的类型。大部分场景下,作为通用的 int 就能满足需求了(比如表示数组的长度、下标,在 32 位系统和 64 位系统上数组的最大长度本来就是不一样的);如果你确实需要定长的整数类型,那就直接用 int32int64 啊,为啥非得用 int

笑,眼淚并存 2022-09-19 14:04:28

go之父本来就是个c佬,你说呢

自找没趣 2022-09-19 14:04:28

好像不止 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 这种才让人诧异.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文