Как сообщить компилятору что тип реализует интерфейс

«Как сообщить компилятору что тип реализует интерфейс» — вопрос из категории Golang, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В 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{} для проверки соответствия интерфейсу на этапе компиляции. Если тип не реализует интерфейс - будет ошибка компиляции.