ExpertiDict

Go · Intermediário · Inglês · Técnico

struct embedding

/strʌkt ɪmˈbɛdɪŋ/substantivo

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

Veja também

Todos os termos de Go