Back to questions
Senior
3
Где лучше определять интерфейс — в месте имплементации или в месте использования?
Companies where asked
Магнит Тех
Answer from AI
sobes.tech AI
В Go интерфейсы лучше определять в месте использования, а не в месте реализации. Это позволяет создавать минимальные интерфейсы, которые описывают только те методы, которые действительно нужны потребителю.
Такой подход повышает гибкость и упрощает тестирование, так как реализация не обязана знать о всех интерфейсах, а только о тех, которые ей нужны.
Пример:
// В месте использования
type Reader interface {
Read(p []byte) (n int, err error)
}
func Process(r Reader) {
// использует только метод Read
}
// В месте реализации
type File struct {}
func (f *File) Read(p []byte) (int, error) {
// реализация
}
Таким образом, интерфейс определяется исходя из потребностей клиента, а не реализации.