Зачем вообще используются интерфейсы (в разработке в целом, не только в Go)?

Интерфейсы в Go нужны для определения поведения объектов без привязки к конкретной реализации. Они позволяют писать более гибкий и расширяемый код, поддерживают полиморфизм и облегчают тестирование.

Короткий ответ

Что ответить на собеседовании

Интерфейсы в Go нужны для определения поведения объектов без привязки к конкретной реализации. Они позволяют писать более гибкий и расширяемый код, поддерживают полиморфизм и облегчают тестирование.

Подробный разбор

Ответ с пояснениями

Интерфейсы в Go нужны для определения поведения объектов без привязки к конкретной реализации. Они позволяют писать более гибкий и расширяемый код, поддерживают полиморфизм и облегчают тестирование.

Если использовать только структуры, то код становится жестко связанным с конкретными типами, что затрудняет замену реализации или написание моков для тестов.

Например, интерфейс Reader определяет метод Read, и разные типы (файлы, буферы, сетевые соединения) могут реализовывать этот интерфейс, позволяя использовать их взаимозаменяемо:

type Reader interface {
    Read(p []byte) (n int, err error)
}

func ReadData(r Reader) {
    buf := make([]byte, 100)
    r.Read(buf)
    // обработка данных
}

Таким образом, интерфейсы обеспечивают абстракцию и слабую связанность кода.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку