22

我试过:

fmt.Printf("%d", math.MaxUint64)

但我收到以下错误消息:

常量 18446744073709551615 溢出 int

我怎样才能解决这个问题?谢谢!

4

1 回答 1

46

math.MaxUint64是一个常数,而不是 int64。请尝试:

fmt.Printf("%d", uint64(num))

这里的问题是常量是无类型的。常量将根据使用它的上下文假定一个类型。在这种情况下,它被用作接口{},因此编译器无法知道您要使用的具体类型。对于整数常量,它默认为int. 由于您的常量溢出了一个 int,这是一个编译时错误。通过传递uint64(num),您是在通知编译器您希望将值视为uint64.

请注意,此特定常量仅适合 uint64,有时也适合 uint。该值甚至大于标准 int64 可以容纳的值。

于 2013-05-10T04:08:19.797 回答