Структура имеет другой размер, если порядок полей отличается

package main

import (
    "fmt"
    "unsafe"
)

type A struct {
    a bool
    b int64
    c int
}

type B struct {
    b int64
    a bool
    c int
}

type C struct {
}

func main() {
    // output 24
    fmt.Println(unsafe.Sizeof(A{}))

    // output 16
    fmt.Println(unsafe.Sizeof(B{}))

    // output 0
    fmt.Println(unsafe.Sizeof(C{}))
}

StructA а такжеB имеют одинаковые поля, но если указаны в другом порядке, они приводят к разному размеру. Зачем?

Размер структурыC это ноль. Сколько памяти выделено системой дляa := C{}?

Благодарю.

Ответы на вопрос(1)

Ваш ответ на вопрос