22

私は試した:

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

しかし、次のエラーメッセージが表示されました:

定数 18446744073709551615 オーバーフロー int

どうすればこれを修正できますか? ありがとう!

4

1 に答える 1

46

math.MaxUint64int64 ではなく、定数です。代わりに試してください:

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

ここでの問題は、定数が型指定されていないことです。定数は、それが使用されるコンテキストに応じてタイプを想定します。この場合、interface{} として使用されているため、コンパイラは使用する具象型を知る方法がありません。整数定数の場合、デフォルトはintです。定数が int をオーバーフローしているため、これはコンパイル時エラーです。を渡すことuint64(num)で、値を として処理することをコンパイラに通知しますuint64

この特定の定数は、uint64 および場合によっては uint にのみ適合することに注意してください。この値は、標準の int64 が保持できるよりもさらに大きくなります。

于 2013-05-10T04:08:19.797 に答える