Как я могу распечатать константу uint64 в Go с помощью fmt?
Я старался:
fmt.Printf ("% d", math.MaxUint64)
но я получил следующее сообщение об ошибке:
константа 18446744073709551615 переполняется int
Как я могу это исправить? Спасибо!
1 ответ
math.MaxUint64
это константа, а не int64. Попробуйте вместо этого:
fmt.Printf("%d", uint64(num))
Проблема здесь в том, что константа нетипизирована. Константа будет принимать тип в зависимости от контекста, в котором она используется. В этом случае он используется как интерфейс {}, поэтому у компилятора нет возможности узнать, какой конкретный тип вы хотите использовать. Для целочисленных констант по умолчанию int
, Поскольку ваша константа переполняет int, это ошибка времени компиляции. Мимоходом uint64(num)
вы сообщаете компилятору, что хотите, чтобы значение рассматривалось как uint64
,
Обратите внимание, что эта конкретная константа будет помещаться только в uint64, а иногда и в uint. Это даже больше, чем стандартный int64.