【问题标题】:How can I print out an constant uint64 in Go using fmt?如何使用 fmt 在 Go 中打印出常量 uint64?
【发布时间】:2013-05-04 16:27:17
【问题描述】:

我试过了:

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

但我收到以下错误消息:

常量 18446744073709551615 溢出 int

我该如何解决这个问题?谢谢!

【问题讨论】:

  • 在我看来,您试图在类型为 int 的变量中存储太大的数字。请改用uint64
  • 我很抱歉,但我在写问题时犯了一个错误。我已经更新了它以反映我的意思。

标签: printing go int64


【解决方案1】:

math.MaxUint64 是一个常量,而不是 int64。试试吧:

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

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

请注意,此特定常量仅适合 uint64,有时也适合 uint。该值甚至比标准 int64 所能容纳的还要大。

【讨论】:

  • 在哪方面uint64int64 大?我会假设“更大”是指位大小,这两种类型都相同,因此后缀为 64。也许您想引用值范围?但是这两种类型的范围也是相同的,只是范围以不同的值开始和结束。
  • 它不是最精确的语言,但“it”是常量,常量的值比 int64 可以容纳的“更大”。为了清楚起见,我编辑了这句话。
猜你喜欢
  • 1970-01-01
  • 2021-06-27
  • 2016-03-26
  • 2012-03-25
  • 2011-11-06
  • 2011-02-25
  • 2016-01-19
  • 2014-06-05
  • 1970-01-01
相关资源
最近更新 更多