Назад к вопросам
Senior
2
Зачем вообще нужны интерфейсы? Почему просто структуры не использовать?
Компании, где спрашивали
Small
Ответ от нейросети
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)
// обработка данных
}
Таким образом, интерфейсы обеспечивают абстракцию и слабую связанность кода.