我正在使用 64 位服务器。我的 golang 程序需要整数类型。所以,如果我在源代码中使用 uint16 和 uint32 类型,它是否比使用大多数常规 int 类型花费更多?我正在考虑计算成本和开发成本。
1 回答
呼啦一阵风
TA贡献1802条经验 获得超6个赞
对于绝大多数情况,使用int
更有意义。以下是一些原因:
Go 不会在数字类型之间隐式转换,即使您认为应该这样做。如果您开始使用一些无符号类型而不是
int
,您应该期望您的代码具有多种类型转换,因为其他库或 API 更喜欢不打扰无符号类型,因为无类型常量数值表达式返回int
值等。无符号类型比有符号类型更容易发生下溢,因为 0(无符号类型的边界值)在计算机程序中比 -9223372036854775808 更像是一个自然发生的值。
如果您想使用无符号类型,因为它限制了您可以放入其中的值,请记住,当您将静默下溢和仅编译时常量传播结合使用时,您可能无法获得想要的便宜货。例如,虽然您无法将常量转换
math.MinInt64
为 auint
,但您可以轻松地将int
带值的变量转换math.MinInt64
为 auint
。并且可以说,if
检查您尝试分配的值是否对您的程序有效并不是一种糟糕的 Go 风格。
除非您遇到显着的内存压力并且您的价值空间略高于较小的有符号类型为您提供的空间,否则我认为int
即使只是因为开发成本,使用也会更有效率。即便如此,也有可能是程序内存占用的其他地方存在问题,或者像 Go 这样的托管语言不适合您的需求。
- 1 回答
- 0 关注
- 187 浏览
添加回答
举报
0/150
提交
取消