Go语言中int类型的变量在32位操作系统长度是32,64位长度是64,这样肯定会导致风险,那为什么还要这么设计?
###不要把别的语言的类型带过来。
以 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 这种才让人诧异.