Golang的内存对齐
测试demo:
我们先来看一个demo:
type Part1 struct {
a bool
b int32
c int8
d int64
e byte
}
我们先来看一下Part1里面的各个数据域会占用多少字节:
func main() {
fmt.Printf("bool size: %d\n", unsafe.Sizeof(bool(true)))
fmt.Printf("int32 size: %d\n", unsafe.Sizeof(int32(0)))
fmt.Printf("int8 size: %d\n", unsafe.Sizeof(int8(0)))
fmt.Printf("int64 size: %d\n", unsafe.Sizeof(int64(0)))
fmt.Printf("byte size: %d\n", unsafe.Sizeof(byte(0)))
}
输出结果是:
bool size: 1
int32 size: 4
int8 size: 1
int64 size: 8
byte size: 1
所以占用总字节是:15个字节。 但是我们看看实际上Part1所占用的字节数:
func