Задать вопрос
@Corray

Какой размер структуры в Go?

Создал две структуры из двух полей: в одной типов int8 и int16, в другой оба int16. При этом экземпляры обеих структур имеют размер 4 байта, хотя размеры полей такие, как надо. Насколько я понимаю, сама по себе структура не весит ничего, размер пустой структуры 0 байт. Так куда же девается 1 байт в первой структуре?
Только начал учить Go, так что не судите за глупые вопросы)
  • Вопрос задан
  • 635 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Go-разработчик с нуля
    8 месяцев
    Далее
  • Skillfactory
    Профессия Backend-разработчик на Go
    12 месяцев
    Далее
  • Нетология
    Go-разработчик с нуля
    9 месяцев
    Далее
Решения вопроса 1
VoidVolker
@VoidVolker
Dark side eye. А у нас печеньки! А у вас?
Это называется выравнивание памяти. На сколько именно выравнивается и чем именно - зависит от многих факторов. ОС, ЯП, процессор и прочее.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
uvelichitel
@uvelichitel Куратор тега Go
habrahabr.ru/users/uvelichitel
Как уже отмечалось это alignment и его можно посмотреть функцией unsafe.Alignof() https://pkg.go.dev/unsafe#Alignof
Но не всё потеряно, акробатическими трюками можно бороться за каждый байт) Например:
type s struct {
	x int16
	y int8
	z int8
}

тоже будет занимать 4 байта на распространённых архитектурах. Prooflink https://play.golang.com/p/4AfhDeXDyF-
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы