Sobes.tech
Back to questions
Middle+
5

Где располагать интерфейсы — по месту объявления или по месту использования?

Companies where asked
СБЕРСБЕР

Answer from AI

sobes.tech AI

В Go интерфейсы обычно располагают по месту использования, а не по месту объявления. Это связано с философией Go — интерфейсы описывают поведение, которое требуется клиенту, а не то, что реализует конкретный тип.

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

Пример:

// В пакете storage
// Интерфейс определён там, где он используется
func ProcessData(s DataStore) {
    s.Save()
}

// В другом пакете
type FileStore struct {}
func (f FileStore) Save() { /* реализация */ }

// FileStore автоматически реализует интерфейс DataStore

Таким образом, интерфейсы в Go — это контракты, которые определяются потребителем, а не поставщиком.