与我在C++中学到的类似,我认为是填充导致两个 struct 的实例大小不同.
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
- 定义 struct 成员时是否有经验法则可遵循?(如文字大小的升序/降序)
- 有没有我们可以通过的编译时间优化,可以自动解决这个问题?
- 或者我根本不应该担心这个?