Sobes.tech
Senior

Mi az interfész a Go-ban? Hogyan valósítják meg a típusok az interfészeket?

sobes.tech MI

Válasz az MI-től

Go nyelven egy interfész egy olyan metódusokból álló halmaz, amelyek egy viselkedést írnak le. Egy típus akkor valósít meg egy interfészt, ha tartalmazza az összes, az interfészben deklarált metódust, anélkül, hogy explicit módon jelezné az interfész megvalósítását.

Ezt nevezzük implicit interfész megvalósításnak. Ennek köszönhetően rugalmasabb és bővíthetőbb kód írható.

Példa:

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) {
    // olvasási megvalósítás
    return 0, nil
}

func main() {
    var r Reader
    f := File{}
    r = f // A File megvalósítja a Reader-t
    fmt.Println(r)
}

Itt a File típus megvalósítja a Reader interfészt, mert rendelkezik a szükséges aláírású Read metódussal.