Создал две структуры из двух полей: в одной типов int8 и int16, в другой оба int16. При этом экземпляры обеих структур имеют размер 4 байта, хотя размеры полей такие, как надо. Насколько я понимаю, сама по себе структура не весит ничего, размер пустой структуры 0 байт. Так куда же девается 1 байт в первой структуре?
Только начал учить Go, так что не судите за глупые вопросы)
Как уже отмечалось это alignment и его можно посмотреть функцией unsafe.Alignof()https://pkg.go.dev/unsafe#Alignof
Но не всё потеряно, акробатическими трюками можно бороться за каждый байт) Например: