Una interfaz en Go define un conjunto de firmas de métodos — un contrato de comportamiento. Lo crucial es que las interfaces se satisfacen implícitamente: cualquier tipo que tenga esos métodos satisface automáticamente la interfaz, sin necesidad de una declaración explícita "implements". Este enfoque estructural, de duck-typing, es distintivo y poderoso.
Definir e implementar implícitamente una interfaz
Speaker {
Speak()
}
Dog {}
Speak() { }
Cat {}
Speak() { }
s Speaker = Dog{}
s.Speak()
