Sobes.tech
Middle+

Où placer les interfaces : à l'endroit de la déclaration ou à l'endroit de l'utilisation ?

sobes.tech IA

Réponse de l'IA

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

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

Пример:

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

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

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

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