Sobes.tech
Back to questions
Senior
3

Зачем вообще нужны интерфейсы? Почему просто структуры не использовать?

Companies where asked
Small

Answer from AI

sobes.tech AI

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

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

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

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

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

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