Для использования интерфейсов, надо создать тип интерфейса: В Golang для интерфейсов принято добавлять окончание "er"(Tester, Modeler, Marshaler и т.п.) Интерфейс будет назначаться автоматически всем структурам у которых есть методы указанные в нем. В данном примере структура Test будет определена интересом Tester, так как имеет такие же методы. В дальнейшем интерфейс можно использовать как определение типа передаваемого в методы. Теперь можно создать разные структуры и использовать их с помощью интерфейса в нужных вам методах. Пример применения. Например вы создали свой тип данных и хотите записывать его в JSON и читать от туда же. Для этого используются два интерфейса Unmarshaler (UnmarshalJSON([]byte) error) и Marshaler(MarshalJSON() ([]byte, error))