В Go размер целочисленных типов в памяти строго определен спецификацией языка и не зависит от платформы (архитектуры процессора или ОС).
var (
a int32 // Всегда занимает 4 байта (32 бита)
b int64 // Всегда занимает 8 байт (64 бита)
)
int32:
int32_t
в C/C++int64:
int64_t
в C/C++int
, который может быть 32 или 64 бит в зависимости от платформы, int32
и int64
всегда имеют указанный размерМожно убедиться в размерах с помощью функции unsafe.Sizeof()
:
package main
import (
"fmt"
"unsafe"
)
func main() {
var i32 int32
var i64 int64
fmt.Println("int32 size:", unsafe.Sizeof(i32), "bytes") // 4
fmt.Println("int64 size:", unsafe.Sizeof(i64), "bytes") // 8
}
int32
= 4 байта (32 бита)int64
= 8 байт (64 бита)unsafe.Sizeof()