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

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

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

最佳答案

在大多数情况下,使用int更有意义。
原因如下:

  • Go不会在数字类型之间隐式转换,即使您认为应该也可以。如果您开始使用某种无符号类型而不是int,那么您应该期望将代码进行多种类型转换,因为其他库或API宁愿不打扰无符号类型,因为无类型的常量数值表达式返回int值等。
  • 无符号类型比带符号类型更容易发生下溢,因为与(例如-9223372036854775808)相比,0(无符号类型的边界值)在计算机程序中自然产生的值更多。
  • 如果您想使用无符号类型,因为它限制了您可以输入的值,请记住,当您组合静默下溢并编译仅时间常数传播时,您可能并没有得到想要的便宜货。例如,虽然您不能将常量math.MinInt64转换为uint,但可以轻松地将值intmath.MinInt64变量转换为uint。可以说,使用if检查您要分配的值对于程序是否有效并不是一个坏的Go风格。

  • 除非您遇到显着的内存压力,并且您的值空间比较小的有符号类型所提供的空间略大一些,否则我认为即使由于开发成本,使用int也会更加高效。
    即使这样,也有可能是程序的内存占用量存在其他问题,或者像Go这样的托管语言并不是最适合您的需求。

    关于go - 在Golang中,uint16 VS int,哪个成本更低?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36144644/

    10-14 00:05