Sobes.tech
Senior

Czym są interfejsy w Go? Jak typy implementują interfejsy?

sobes.tech AI

Odpowiedź od AI

W języku Go interfejs to zbiór metod opisujących zachowanie. Typ implementuje interfejs, jeśli zawiera wszystkie metody zadeklarowane w interfejsie, bez konieczności jawnego wskazywania implementacji interfejsu.

Nazywa się to niejawną implementacją interfejsów. Dzięki temu można pisać bardziej elastyczny i rozszerzalny kod.

Przykład:

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) {
    // implementacja czytania
    return 0, nil
}

func main() {
    var r Reader
    f := File{}
    r = f // File implementuje Reader
    fmt.Println(r)
}

Tutaj typ File implementuje interfejs Reader, ponieważ posiada metodę Read o odpowiedniej sygnaturze.