Go имеет два предварительно объявленных целочисленных типа с размерами, зависящими от реализации:
- uint (целое число без знака) имеет 32 или 64 бита,
- int (целое число со знаком) имеет тот же размер, что и uint.
Этот код вычисляет предельные значения как нетипизированные константы.
const UintSize = 32 << (^uint(0) >> 32 & 1) // 32 или 64
const (
MaxInt = 1<<(UintSize-1) - 1 // 1<<31 - 1 или 1<<63 - 1
MinInt = -MaxInt - 1 // -1 << 31 или -1 << 63
MaxUint uint = 1<<UintSize - 1 // 1<<32 - 1 или 1<<64 - 1
)
fmt.Println(UintSize)
fmt.Println(MaxInt)
fmt.Println(MinInt)
fmt.Println(MaxUint)
Вывод:
64 // UintSize
9223372036854775807 // MaxInt
-9223372036854775808 // MinInt
18446744073709551615 // MaxUint
Константа UintSize также доступна в пакете math/bits.
Читайте также:
- Спецификация Go: логические, числовые, строковые типы
- Преобразования между int, int64 и string в Golang
- Константы в Golang
Комментариев нет:
Отправить комментарий