🔴 Сложный · 3 очк. Структуры и методы
Почему порядок полей в структуре может влиять на её размер в памяти?
A Не влияет
B Из-за выравнивания (alignment) - padding между полями
C Из-за GC
D Из-за имён полей
Объяснение вопроса

Из-за выравнивания (alignment): процессор обращается к данным по границам (например, int64 по 8 байт). Между полями компилятор добавляет padding. Порядок полей влияет на количество padding-байт и на итоговый размер структуры.

type Bad struct {
    a bool   // 1
    // 7 bytes padding
    b int64  // 8
    c bool   // 1
    // 7 bytes padding
}  // 24 байта

type Good struct {
    b int64  // 8
    a bool   // 1
    c bool   // 1
    // 6 bytes padding
}  // 16 байт

Линтер fieldalignment находит неоптимальный порядок: go install golang.org/x/tools/go/analysis/passes/fieldalignment/cmd/fieldalignment@latest и fieldalignment ./....

🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.