Ответ
В Go интерфейсы реализуются неявно - достаточно чтобы тип имел все методы интерфейса. Явного объявления не требуется.
Пример:
type Writer interface {
Write([]byte) (int, error)
}
type MyWriter struct{}
func (w MyWriter) Write(data []byte) (int, error) {
return len(data), nil
}
// MyWriter автоматически реализует Writer
var _ Writer = MyWriter{} // Проверка на этапе компиляции
Используется идиома var _ Interface = ConcreteType{} для проверки соответствия интерфейсу на этапе компиляции. Если тип не реализует интерфейс - будет ошибка компиляции.