В свободное от основной работы время автор материала консультирует по Go и разбирает код. Естественно, что в ходе такой деятельности он читает много кода, написанного другими людьми. В последнее время у автора этой статьи сложилось впечатление (да именно впечатление, никакой статистики), что программеры стали чаще работать с интерфейсами в «стиле Java».
Этот пост содержит рекомендации автора материала об оптимальном использовании интерфейсов в Go, основанные на его опыте в написании кода.
В примерах этого поста мы будет пользоваться двумя пакетами
animal
и circus
. Многие вещи в этом посте описывают работу с кодом, граничащим с регулярным применением пакетов.Как делать не надо
Очень распространенное явление, которое я наблюдаю:
package animals
type Animal interface {
Speaks() string
}
// применение Animal
type Dog struct{}
func (a Dog) Speaks() string { return "woof" }