Назад к вопросам
СБЕР
Middle+
6
Где располагать интерфейсы — по месту объявления или по месту использования?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
В Go интерфейсы обычно располагают по месту использования, а не по месту объявления. Это связано с философией Go — интерфейсы описывают поведение, которое требуется клиенту, а не то, что реализует конкретный тип.
Если интерфейс объявлять рядом с реализацией, он может быть слишком специфичным или избыточным. Лучше определить интерфейс там, где он нужен, чтобы минимизировать зависимости и повысить гибкость кода.
Пример:
// В пакете storage
// Интерфейс определён там, где он используется
func ProcessData(s DataStore) {
s.Save()
}
// В другом пакете
type FileStore struct {}
func (f FileStore) Save() { /* реализация */ }
// FileStore автоматически реализует интерфейс DataStore
Таким образом, интерфейсы в Go — это контракты, которые определяются потребителем, а не поставщиком.