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

Yi *_*ang 2 go

我使用的是64位服务器.我的golang程序需要整数类型.

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

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

Dim*_*rov 12

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

  1. Go不会隐式地在数字类型之间进行转换,即使您认为它应该也是如此.如果您开始使用某些无符号类型而不是int,那么您应该期望通过多种类型转换来编写代码,因为其他库或API更喜欢不使用无符号类型,因为返回int值的非类型化常量数值表达式等等.
  2. 无符号类型比符号类型更容易下溢,因为0(无符号类型的边界值)在计算机程序中比自然发生的值更多,例如,-9223372036854775808.
  3. 如果您想使用无符号类型,因为它限制了您可以放入其中的值,请记住,当您组合静默下溢和编译仅限时间的常量传播时,您可能无法获得您想要的便宜货.例如,虽然您无法将常量转换math.MinInt64为a uint,但您可以轻松地将int值变量转换math.MinInt64为a uint.并且可以说,if检查您尝试分配的值是否对您的程序有效并不是一种糟糕的Go风格.

除非您遇到巨大的内存压力,并且您的价值空间略高于较小的签名类型将为您提供的价值空间,我认为int即使仅仅因为开发成本,使用也会更有效率.即便如此,很可能在程序的内存占用中存在其他问题,或者像Go这样的托管语言不是最适合您的需求.