Métodos

No exemplo anterior, vimos que uma função tinha como parâmetro uma interface, porém ela recebeu como argumento structs. O que aconteceu?

Quando uma struct é passada como argumento aonde se espera uma interface, a linguagem implicitamente converte a sua struct para a interface, ou seja, dentro da função, nós estamos lidando com uma interface em si.

Mas como pudemos chamar então um método que estava definido para as structs?

Acontece que quando uma struct é convertida em uma interface, você só terá acesso aos métodos que a interface definiu.

Por esse motivo que, se tentarmos executar um método em uma interface que ela não tenha definido, iremos gerar um panic.

Isso acontece mesmo que a struct que foi convertida possuisse esse método. Observe o exemplo ao lado para entender na prática.

metodos.go