Интерфейс в Go определяет набор сигнатур методов — контракт поведения. Критически важно, что интерфейсы удовлетворяются неявно: любой тип, который имеет эти методы, автоматически удовлетворяет интерфейс, без явного объявления "implements". Этот структурный подход, похожий на duck-typing, отличается и очень мощный.
Определение и неявная реализация интерфейса
Speaker {
Speak()
}
Dog {}
Speak() { }
Cat {}
Speak() { }
s Speaker = Dog{}
s.Speak()
