Как я могу распечатать константу 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.

Другие вопросы по тегам