Senior
Какви са интерфейсите в Go? Как типове реализират интерфейси?
sobes.tech AI
Отговор от 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 с необходимата сигнатура.