Accept interfaces return structs?

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

Это один из главных принципов Go: функции должны принимать интерфейсы и возвращать конкретные типы. Принимаешь io.Reader — и твоя функция работает с файлами, буферами, HTTP body, чем угодно. Возвращаешь конкретный тип *MyService — вызывающий код видит все методы и может использовать как значение. Если возвращать интерфейс — скрываешь возможности и усложняешь тестирование. Исключение — когда нужно скрыть реализацию за интерфейсом (например, разные БД-драйверы). Но по умолчанию: интерфейс на входе, struct на выходе.

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

Что такое SRE?