Sobes.tech
Junior — Middle

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

sobes.tech AI

Odpověď od AI

V jazyce Go jsou rozhraní implementována podle principu implicitní implementace. To znamená, že typ automaticky implementuje rozhraní, pokud má všechny metody, které rozhraní vyžaduje, aniž by bylo nutné to výslovně uvádět v kódu (na rozdíl od jazyků Java nebo C#, kde je třeba explicitně deklarovat implementaci rozhraní).

To umožňuje psát flexibilnější a méně propojený kód, protože typy a rozhraní nezávisí přímo na sobě.

Příklad:

package main
import "fmt"

type Reader interface {
    Read(p []byte) (n int, err error)
}

type MyReader struct{}

func (r MyReader) Read(p []byte) (n int, err error) {
    // implementace čtení
    return 0, nil
}

func main() {
    var r Reader = MyReader{} // implicitní implementace rozhraní
    fmt.Println(r)
}

Také v jazyce Go neexistuje dědičnost tříd, rozhraní se používají pro polymorfismus a kompozici, což je odlišuje od mnoha jiných jazyků.