Junior — Middle
Aký je rozdiel medzi rozhraniami v Golang a tými v iných programovacích jazykoch?
sobes.tech AI
Odpoveď od AI
V jazyku Go sa rozhrania implementujú na základe princípu implicitnej implementácie. To znamená, že typ automaticky implementuje rozhranie, ak má všetky metódy, ktoré rozhranie vyžaduje, bez toho, aby to bolo nutné explicitne uvádzať v kóde (na rozdiel od Javy alebo C#, kde je potrebné explicitne deklarovať implementáciu rozhrania).
Toto umožňuje písať flexibilnejší a menej prepojený kód, pretože typy a rozhrania nie sú priamo závislé od seba.
Prí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) {
// implementácia čítania
return 0, nil
}
func main() {
var r Reader = MyReader{} // implicitná implementácia rozhrania
fmt.Println(r)
}
Taktiež v jazyku Go neexistuje dedičstvo tried, rozhrania sa používajú na polymorfizmus a kompozíciu, čo ich odlišuje od mnohých iných jazykov.