Что такое accept interfaces return structs в Go?

Middle
479 просмотров
AFK Offer AI

Принцип "accept interfaces, return structs" означает: параметры функций — интерфейсы (для гибкости), возвращаемые значения — конкретные типы (для полноты). Принимая io.Reader ты позволяешь передать файл, буфер, HTTP body. Возвращая *UserService ты даёшь вызывающему коду полный API. Если вернуть интерфейс — вызывающий не увидит дополнительных методов, и будет сложнее с type assertion. Исключения: фабрики которые возвращают разные реализации, или когда нужно скрыть internal state от внешних пакетов.

Следующий вопрос

Что такое memoization?