В Go int — это базовый знаковый целочисленный тип, размер которого зависит от архитектуры целевой платформы:
var x int = 42 // Размер зависит от платформы
int32)int64)Проверка размера:
fmt.Println("Размер int в байтах:", unsafe.Sizeof(int(0)))
Граничные константы:
math.MinInt // Минимальное значение
math.MaxInt // Максимальное значение
Размер int определяется:
GOOS)GOARCH)Пример кросс-компиляции:
GOOS=linux GOARCH=386 go build # 32-битный int
GOOS=linux GOARCH=amd64 go build # 64-битный int
int обычно работает быстрееПроблемы:
var a int = 42
var b int32 = 32
sum := a + b // Ошибка: несовместимые типы
Решение:
sum := a + int(b) // Явное приведение
При сериализации (JSON, protobuf и т.д.) int может вести себя по-разному:
Поведение при переполнении:
x := math.MaxInt
x++ // Станет math.MinInt (заворачивание)
int используется для:
len() и cap()make()Важно: Даже когда логичнее использовать uint, в Go предпочитают int
Во многих системных вызовах (например, unsafe.Sizeof) возвращается int
for i := 0; i < n; i++ { // i будет int
// ...
}
int часто остается в регистрах процессораint индексовint — знаковый целочисленный тип с платформозависимым размеромint32/int64uint в большинстве случаев согласно Go-идиоматикеПравила использования:
int для целых чиселint32/int64uint без явного приведения