为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
繁花不似锦 2021-12-27 15:25:51
我正在使用 64 位服务器。我的 golang 程序需要整数类型。所以,如果我在源代码中使用 uint16 和 uint32 类型,它是否比使用大多数常规 int 类型花费更多?我正在考虑计算成本和开发成本。
查看完整描述

1 回答

?
呼啦一阵风

TA贡献1802条经验 获得超6个赞

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

  1. Go 不会在数字类型之间隐式转换,即使您认为应该这样做。如果您开始使用一些无符号类型而不是int,您应该期望您的代码具有多种类型转换,因为其他库或 API 更喜欢不打扰无符号类型,因为无类型常量数值表达式返回int值等。

  2. 无符号类型比有符号类型更容易发生下溢,因为 0(无符号类型的边界值)在计算机程序中比 -9223372036854775808 更像是一个自然发生的值。

  3. 如果您想使用无符号类型,因为它限制了您可以放入其中的值,请记住,当您将静默下溢和仅编译时常量传播结合使用时,您可能无法获得想要的便宜货。例如,虽然您无法将常量转换math.MinInt64为 a uint,但您可以轻松地将int带值的变量转换math.MinInt64为 a uint。并且可以说,if检查您尝试分配的值是否对您的程序有效并不是一种糟糕的 Go 风格。

除非您遇到显着的内存压力并且您的价值空间略高于较小的有符号类型为您提供的空间,否则我认为int即使只是因为开发成本,使用也会更有效率。即便如此,也有可能是程序内存占用的其他地方存在问题,或者像 Go 这样的托管语言不适合您的需求。


查看完整回答
反对 回复 2021-12-27
  • 1 回答
  • 0 关注
  • 187 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信