go 结构体不同的字段顺序对内存的影响

这里主要涉及到结构体内存分配的问题,如下测试:

package main

import (
	"fmt"
	"unsafe"
)

func main() {
	fmt.Printf("A size: %d\n", unsafe.Sizeof(A{})) // 32
	fmt.Printf("B size: %d\n", unsafe.Sizeof(B{})) // 24
	fmt.Printf("C size: %d\n", unsafe.Sizeof(C{})) // 24
}

type A struct {
	a int8 // 1+7
	b string // 16
	c bool // 1+7
}

type B struct {
	a string // 16
	b int8 // 1
	c bool // 1, 1+1+6
}

type C struct {
	b int8 // 1
	c bool // 1, 1+1+6
	a string // 16
}

参考:

posted on 2024-07-13 10:44  进击的davis  阅读(1)  评论(0编辑  收藏  举报

导航