Sobes.tech
Назад к вопросам
Senior
4

Стоит ли возвращать интерфейс вместо структуры? Когда это может быть плюсом?

Компании, где спрашивали
2gis2gis

Ответ от нейросети

sobes.tech AI

Возвращать интерфейс вместо конкретной структуры стоит, когда нужно скрыть детали реализации и предоставить только необходимый набор методов. Это повышает гибкость и облегчает замену реализации без изменения кода клиента.

Плюсы:

  • Позволяет менять внутреннюю реализацию без изменения интерфейса.
  • Упрощает тестирование через мок-объекты.
  • Способствует слабой связности и лучшей абстракции.

Пример:

// Интерфейс
 type Reader interface {
     Read(p []byte) (n int, err error)
 }

// Функция возвращает интерфейс, скрывая конкретную структуру
 func NewReader(data string) Reader {
     return &stringReader{data: data}
 }

// Клиент работает с Reader, не зная о stringReader

Однако, если нужна высокая производительность и нет необходимости в абстракции, можно возвращать конкретную структуру.