Go · Intermediário · Inglês · Técnico
struct embedding
Incluir um tipo dentro de uma struct sem dar nome ao campo, promovendo seus campos e métodos. É a composição de Go no lugar da herança.
Onde usar
'type Admin struct { User }' faz Admin ter os métodos de User. Aparece em wrappers de http.ResponseWriter e em mocks que sobrescrevem só um método.
Em código
type Animal struct{ Name string }
func (a Animal) Speak() string {
return a.Name
}
type Dog struct{ Animal }
d := Dog{Animal{"Rex"}}
fmt.Println(d.Speak(), d.Name)Exemplos
We use struct embedding to reuse the base fields.
Usamos struct embedding para reaproveitar os campos básicos.
Embedding is composition, not inheritance.
Embedding é composição, não herança.
Cuidado
Não é herança: não há polimorfismo de tipos, e um método do tipo embutido não enxerga os métodos redefinidos pelo tipo externo.
Sinônimos
embutir struct, composição
Antônimos
herança