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
- 構造体のメンバを定義する際に従うべき経験則がありますか? (型のサイズの昇順/降順のように)
- 自動的にこれを処理できるコンパイル時間の最適化はありますか?
- 私はこれについて全く心配してはいけませんか?
は、私はまた、あなたが[structlayout](HTTPSのようなツールを使用して、構造体を視覚化できることを追加したいいくつかの洞察を提供することができる例https://play.golang.org/p/dNWspo2Dxv – jpgerek