Sobes.tech
Junior — Middle

Jaký je rozdíl mezi rozhraním v jazyce Go a rozhraními v jiných programovacích jazycích?

sobes.tech AI

Odpověď od AI

V jazyce Go se rozhraní liší tím, že jsou neviditelná — typ nemusí výslovně uvádět, že implementuje rozhraní. Pokud typ obsahuje všechny metody rozhraní, je automaticky považován za jeho implementaci.

To se liší od mnoha jiných jazyků, kde je nutné výslovně deklarovat, že třída nebo typ implementuje rozhraní.

Pří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) {
    // implementace metody
    return 0, nil
}

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