Назад к вопросам
Principal
32
Как устроены интерфейсы в Go?
Компании, где спрашивали
Avosend
Ответ от нейросети
sobes.tech AI
В Go интерфейсы определяются как набор методов, которые должен реализовать тип, чтобы считаться соответствующим этому интерфейсу. Особенность Go в том, что реализация интерфейса не требует явного указания — если тип содержит все методы интерфейса, он автоматически его реализует.
Пример интерфейса и его реализации:
package main
import "fmt"
type Reader interface {
Read(p []byte) (n int, err error)
}
type MyReader struct {}
func (r MyReader) Read(p []byte) (int, error) {
copy(p, "hello")
return 5, nil
}
func main() {
var r Reader = MyReader{}
buf := make([]byte, 5)
r.Read(buf)
fmt.Println(string(buf)) // вывод: hello
}
Таким образом, интерфейсы в Go позволяют писать гибкий и расширяемый код без жесткой привязки к конкретным типам.