Назад к вопросам
2gis
Senior
4
Стоит ли возвращать интерфейс вместо структуры? Когда это может быть плюсом?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Возвращать интерфейс вместо конкретной структуры стоит, когда нужно скрыть детали реализации и предоставить только необходимый набор методов. Это повышает гибкость и облегчает замену реализации без изменения кода клиента.
Плюсы:
- Позволяет менять внутреннюю реализацию без изменения интерфейса.
- Упрощает тестирование через мок-объекты.
- Способствует слабой связности и лучшей абстракции.
Пример:
// Интерфейс
type Reader interface {
Read(p []byte) (n int, err error)
}
// Функция возвращает интерфейс, скрывая конкретную структуру
func NewReader(data string) Reader {
return &stringReader{data: data}
}
// Клиент работает с Reader, не зная о stringReader
Однако, если нужна высокая производительность и нет необходимости в абстракции, можно возвращать конкретную структуру.