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
}
参考: