среда, 13 мая 2020 г.

Выбрать правильный тип: int против int64

Используйте int для индексации

Индекс, длина или емкость обычно должны быть int. Тип int имеет 32 или 64 бита и всегда достаточно большой, чтобы вместить максимально возможную длину массива.

Используйте int64 и друзей для данных

Типы int8, int16, int32 и int64 (и их беззнаковые (unsigned) аналоги) лучше всего подходят для данных. Int64 - типичный выбор, когда память не является проблемой.

В частности, вы можете использовать byte, который является псевдонимом для uint8, для большей ясности в ваших намерениях. Точно так же вы можете использовать rune, которая является псевдонимом для int32, чтобы подчеркнуть, что целое число представляет кодовую точку.

Иногда, если вы используете 32- или 64-битные данные, это не имеет большого значения или вообще ничего не меняет, и тогда достаточно просто использовать int. Однако предпочтительно быть явным. Это заставляет вас задуматься о выборе, а также делает код более понятным.

Примеры

В этом коде элементы среза и переменная max имеют тип int64, а индекс и длина среза имеют тип int.

func Max(a []int64) int64 {
    max := a[0]
    for i := 1; i < len(a); i++ {
        if max < a[i] {
            max = a[i]
        }
    }
    return max
}

Реализация time.Duration - типичный пример из стандартной библиотеки, где для хранения данных используется int64:

type Duration int64

Duration представляет время между двумя моментами в виде числа наносекунд. Это ограничивает максимально возможную продолжительность около 290 лет.

В посте Максимальное значение int показано, как вычислить размер и предельные значения типа int в виде нетипизированных констант.


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


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

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