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