Если вы пишете на Go, то наверняка сталкивались с тем, что размер структуры в памяти оказывается больше, чем кажется «на бумаге». Виновато тут выравнивание — невидимый механизм, который делает работу с памятью быстрее, но иногда добавляет лишние байты. Процессор устроен так, что ему удобнее читать данные не по одному байту, а целыми кусками — словами по 4 или 8 байт. Представьте магазин: кассиру удобнее сканировать товары блоками, а не вытаскивать каждую жвачку по одной. Так же и CPU: если данные лежат «красиво» (по границе 4 или 8 байт), доступ к ним происходит быстрее. Возьмём простую структуру: type Example struct {
A int8 // 1 байт
B int32 // 4 байта
C int8 // 1 байт
} Наивный программист думает: 1 + 4 + 1 = 6 байт. Но Go скажет: 12 байт. Почему? Итого: 12 байт вместо ожидаемых 6. Трюк простой: располагайте поля от больших к маленьким. type Better struct {
B int32 // 4 байта
A int8 // 1 байт
C int8 // 1 байт
} Теперь структура займёт 8 байт вместо