Sobes.tech
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 с необходимата сигнатура.