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