Назад к вопросам
Газпром
Самокат
Купер
Junior — Middle
87
Как осуществляется определение и использование интерфейсов в языке Go?
Компании, где спрашивали
Эрливидео
Startribe
Самокат Тех
Miatel
EMCD
Кредиска
Ответ от нейросети
sobes.tech AI
В Go интерфейсы определяются как набор методов, которые должен реализовать тип, чтобы считаться удовлетворяющим этому интерфейсу. Определение интерфейса выглядит так:
// Определение интерфейса
type Reader interface {
Read(p []byte) (n int, err error)
}
Тип автоматически реализует интерфейс, если у него есть все методы, указанные в интерфейсе. Нет необходимости явно указывать реализацию интерфейса.
Пример использования:
type File struct {}
func (f File) Read(p []byte) (n int, err error) {
// реализация чтения
return 0, nil
}
func process(r Reader) {
buf := make([]byte, 100)
r.Read(buf)
}
func main() {
var f File
process(f) // File реализует Reader
}
Таким образом, интерфейсы в Go позволяют писать гибкий и расширяемый код, опираясь на поведение типов, а не на их конкретные реализации.