Go · Avançado · Português · Técnico
alinhamento de struct
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{})) // 16Exemplos
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