ExpertiDict

Go · Essencial · Português · Técnico

interface implícita

/ĩ.teʁ.ˈfej.si ĩ.ˈpli.si.tɐ/substantivo

Em Go, um tipo satisfaz uma interface apenas por ter os métodos exigidos, sem declarar 'implements'. O compilador checa a relação no uso.

Onde usar

Permite definir a interface no lado de quem consome, pequena e específica, e escrever mocks sem tocar no tipo original. Daí o lema: aceite interfaces, devolva structs.

Em código

type Speaker interface{ Speak() string }
type Cat struct{}
func (Cat) Speak() string { return "miau" }
var _ Speaker = Cat{} // checado ao compilar
var s Speaker = Cat{}
fmt.Println(s.Speak())

Exemplos

Em Go a interface é implícita, basta o tipo ter o método.

Declara a interface no pacote que consome, não no que implementa.

Cuidado

Como não há declaração, um erro de assinatura só aparece onde o valor é usado; confirme antes com 'var _ I = (*T)(nil)'.

Sinônimos

duck typing estático, tipagem estrutural

Antônimos

implements explícito

Veja também

Todos os termos de Go