Через интерфейсы в Go реализован полиморфизм.
В отличие от таких языков, как C++, Java и PHP, где типизация всегда явная, в Go при помощи интерфейсов реализована так называемая «утиная типизация».
Что это значит:
Определение интерфейса напоминает определение класса, только вместо class перед именем интерфейса используется ключевое слово interface:
class
interface
interface A { }
Про интерфейсы можно сказать следующее:
Итерфейс позволяет полностью "отделить" идею того, что должен уметь делать класс и какими полями обладать от того как именно данные действия будут реализованы