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ů.