Назад к вопросам
2gis
Senior
4
Что такое интерфейсы в Go? Как типы реализуют интерфейсы?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
В Go интерфейс — это набор методов, который описывает поведение. Тип реализует интерфейс, если он содержит все методы, объявленные в интерфейсе, без явного указания реализации интерфейса.
Это называется неявной реализацией интерфейсов. Благодаря этому можно писать более гибкий и расширяемый код.
Пример:
package main
import "fmt"
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 main() {
var r Reader
f := File{}
r = f // File реализует Reader
fmt.Println(r)
}
Здесь тип File реализует интерфейс Reader, потому что у него есть метод Read с нужной сигнатурой.