Sobes.tech
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.