Go 中 int 类型的最大值

新手上路,请多包涵

如何指定 unsigned 整数类型可表示的最大值?

我想知道如何初始化 min 在下面的循环中迭代地计算某些结构的最小和最大长度。

 var minLen uint = ???
var maxLen uint = 0
for _, thing := range sliceOfThings {
  if minLen > thing.n { minLen = thing.n }
  if maxLen < thing.n { maxLen = thing.n }
}
if minLen > maxLen {
  // If there are no values, clamp min at 0 so that min <= max.
  minLen = 0
}

这样第一次通过比较, minLen >= n

原文由 Mike Samuel 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

https://groups.google.com/group/golang-nuts/msg/71c307e4d73024ce?pli=1

密切相关的部分:

由于整数类型使用二进制补码算法,您可以推断出 intuint 的最小/最大常量值。例如,

>  const MaxUint = ^uint(0)
> const MinUint = 0
> const MaxInt = int(MaxUint >> 1)
> const MinInt = -MaxInt - 1
>
> ```

根据@CarelZA 的评论:

uint8 : 0 to 255 uint16 : 0 to 65535 uint32 : 0 to 4294967295 uint64 : 0 to 18446744073709551615 int8 : -128 to 127 int16 : -32768 to 32767 int32 : -2147483648 to 2147483647 int64 : -9223372036854775808 to 9223372036854775807

”`

原文由 nmichaels 发布,翻译遵循 CC BY-SA 3.0 许可协议

https://golang.org/ref/spec#Numeric_types 物理类型限制。

最大值在 math 包中定义,因此在您的情况下:math.MaxUint32

注意没有溢出 - 递增超过最大值会导致回绕。

原文由 Deleted 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题