Используйте 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 в виде нетипизированных констант.
Читайте также:
- Спецификация Go: логические, числовые, строковые типы
- Преобразования между int, int64 и string в Golang
- Константы в Golang
Комментариев нет:
Отправить комментарий