和我在C ++中学到的类似,我相信是填充导致了两个结构实例大小的差异。
type Foo struct {
w byte //1 byte
x byte //1 byte
y uint64 //8 bytes
}
type Bar struct {
x byte //1 byte
y uint64 //8 bytes
w byte// 1 byte
}
func main() {
fmt.Println(runtime.GOARCH)
newFoo := new(Foo)
fmt.Println(unsafe.Sizeof(*newFoo))
newBar := new(Bar)
fmt.Println(unsafe.Sizeof(*newBar))
}
输出:
amd64
16
24
- 在定义结构成员时是否有遵循的经验法则?(例如按类型大小升序/降序排列)
- 是否有一种可以传递的编译时优化,可以自动处理这个问题?
- 或者我根本不需要担心这个问题吗?