在Golang,uint16 VS int,哪个成本更低?

时间:2016-03-22 01:23:25

标签: go

我正在使用64位服务器。我的golang程序需要整数类型。

所以,如果我在源代码中使用uint16和uint32类型,它是否比使用大多数常规int类型花费更多?

我正在考虑计算成本和开发成本。

1 个答案:

答案 0 :(得分:12)

对于使用int的绝大多数情况更有意义。 以下是一些原因:

  1. Go不会隐式转换数字类型,即使您认为它应该。如果您开始使用某些无符号类型而不是int,那么您应该期望通过多种类型转换来编写代码,因为其他库或API更喜欢不使用无符号类型,因为返回{{{} 1}}值等。
  2. 无符号类型比签名类型更容易下溢,因为0(无符号类型的边界值)在计算机程序中比自然发生的值更多,例如,-9223372036854775808。
  3. 如果您想使用无符号类型,因为它限制了您可以放入其中的值,请记住,当您组合静默下溢和编译仅限时间的常量传播时,您可能无法获得讨价还价寻找。例如,虽然您无法将常量int转换为math.MinInt64,但您可以轻松地将值uint的{​​{1}}变量转换为int。并且可以说,使用math.MinInt64检查您尝试分配的值是否对您的程序有效并不是糟糕的Go风格。
  4. 除非你遇到巨大的内存压力,并且你的价值空间略微超过了较小的签名类型所能给你的价值空间,否则我认为即使只是因为开发成本,使用uint也会更有效率。 即便如此,很可能在程序的内存占用中存在其他问题,或者像Go这样的托管语言不是最符合您需求的。

相关问题