вторник, 5 мая 2020 г.

Максимальное значение типа int в Golang

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.


Читайте также:


Комментариев нет:

Отправить комментарий