Definição

Uma interface define o comportamento de um tipo. Por comportamento, queremos dizer que ela define uma "lista" dos métodos que um tipo deve possuir para que se possa considerar que esse tipo implementa a sua interface.

Para exemplificar, observe o seguinte tipo:


type Pessoa struct {
    Nome string
}

func (p Pessoa) Falar(frase string) {
    fmt.Printf("%s diz: %s", p.Nome, frase)
}
                        

Observa-se que ele possui o método Falar(). Agora imagine que temos vários tipos diferentes que possuem esse mesmo método, e queremos chama-lo dentro de uma função que irá receber qualquer tipo que possua esse método.

Para isso, usamos uma interface que peça esse método:


type Falador interface {
    Falar(string)
}
                        

Com essa interface, podemos agora criar uma função que aceite qualquer tipo que a implemente, deixando de lado a necessidade de escrever uma função para cada tipo que tivesse o método Falar().

definicao.go