Как и в том, что я узнал на C++, я считаю, что это дополнение, которое вызывает разницу в размерах экземпляров обеих структур.Оптимизация структуры данных/выравнивание слов в golang
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
- Есть ли эмпирическое правило следовать при определении элементов этой структуры? (например, по возрастанию/убыванию порядка размеров)
- Есть ли оптимизация времени компиляции, которую мы можем передать, что может автоматически позаботиться об этом?
- Или я не должен беспокоиться об этом вообще?
Я привел пример, что может обеспечить некоторое представление https://play.golang.org/p/dNWspo2Dxv – jpgerek