Подобно тому, что я узнал из 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
- Есть ли эмпирическое правило, которому нужно следовать при определении членов структуры? (например, в порядке возрастания/убывания размера типов)
- Есть ли оптимизация времени компиляции, которую мы можем пройти, которая может автоматически позаботиться об этом?
- Или мне вообще не стоит об этом беспокоиться?