ExpertiDict

Go · Avançado · Português · Técnico

alinhamento de struct

/a.li.ɲa.ˈmẽ.tu ʤi strʌkt/substantivo

Regra pela qual o compilador insere bytes de preenchimento entre os campos para que cada um comece num endereço múltiplo do seu alinhamento.

Onde usar

Reordenar os campos do maior para o menor pode reduzir o tamanho de uma struct usada aos milhões. A ferramenta fieldalignment, do x/tools, sugere isso.

Em código

type A struct {
  a bool
  b int64
  c bool
}
type B struct{ b int64; a, c bool }
fmt.Println(unsafe.Sizeof(A{})) // 24
fmt.Println(unsafe.Sizeof(B{})) // 16

Exemplos

Reordenei os campos e o alinhamento de struct economizou oito bytes por item.

Roda o fieldalignment, o alinhamento dessa struct está desperdiçando memória.

Cuidado

Só vale a pena em structs com muitas instâncias; no geral, legibilidade e agrupamento lógico pesam mais.

Sinônimos

padding, struct padding

Veja também

Todos os termos de Go