Uma interface em Go define um conjunto de assinaturas de métodos — um contrato de comportamento. Crucialmente, interfaces são satisfeitas implicitamente: qualquer tipo que possua esses métodos satisfaz automaticamente a interface, sem nenhuma declaração explícita "implements". Essa abordagem estrutural, do tipo duck-typing, é distintiva e poderosa.
Definindo e implementando implicitamente uma interface
Speaker {
Speak()
}
Dog {}
Speak() { }
Cat {}
Speak() { }
s Speaker = Dog{}
s.Speak()
