Sobes.tech
Junior — Middle

Aký je rozdiel medzi rozhraním v jazyku Go a rozhraniami v iných programovacích jazykoch?

sobes.tech AI

Odpoveď od AI

V jazyku Go sa rozhrania líšia tým, že sú neviditeľné — typ nemusí výslovne uvádzať, že implementuje rozhranie. Ak typ obsahuje všetky metódy rozhrania, je automaticky považovaný za jeho implementáciu.

Toto sa líši od mnohých iných jazykov, kde je potrebné výslovne deklarovať, že trieda alebo typ implementuje rozhranie.

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 metódy
    return 0, nil
}

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