Sobes.tech
Senior

Čo sú rozhrania v Go? Ako typy implementujú rozhrania?

sobes.tech AI

Odpoveď od AI

V jazyku Go je rozhranie súborom metód, ktoré opisujú správanie. Typ implementuje rozhranie, ak obsahuje všetky metódy deklarované v rozhraní, bez nutnosti explicitne uvádzať implementáciu rozhrania.

Toto sa nazýva nepriama implementácia rozhraní. Vďaka tomu je možné písať flexibilnejší a rozšíriteľnejší kód.

Príklad:

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) {
    // implementácia čítania
    return 0, nil
}

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

Tu, typ File implementuje rozhranie Reader, pretože má metódu Read s požadovanou podpisom.