Skip to content

Instantly share code, notes, and snippets.

@rehydrate1
rehydrate1 / go_struct_alignment.md
Last active October 15, 2025 14:18
Выравнивание структур в Go

Go: Оптимизация памяти через выравнивание структур

TL;DR: Порядок полей в структурах Go влияет на их итоговый размер в памяти из-за механизма выравнивания. Группировка полей по их размеру (от большего к меньшему) позволяет минимизировать неиспользуемое пространство (padding) и сократить потребление памяти.

Проблема: Выравнивание и Padding

Для максимальной производительности процессору требуется, чтобы данные в памяти располагались по адресам, кратным их размеру. Этот механизм называется выравниванием (alignment). Чтобы его обеспечить, компилятор Go может добавлять между полями структуры неиспользуемые байты — заполнение (padding). 72d1e16a-58dd-444c-a002-f0ef65c982ce_1920x1080

Неоптимальный порядок полей приводит к избыточному паддингу и "раздувает" структуру.