Junior — Middle
Mi a különbség a Golang interfészei és más programozási nyelvek interfészei között?
sobes.tech MI
Válasz az MI-től
A Go nyelvben az interfészek a nem-nyilvánvaló megvalósítás elve szerint valósulnak meg. Ez azt jelenti, hogy egy típus automatikusan megvalósít egy interfészt, ha rendelkezik az összes olyan módszerrel, amit az interfész megkövetel, anélkül, hogy ezt explicit módon jelezné a kódban (ellentétben például a Java vagy C# nyelvekkel, ahol explicit módon kell deklarálni az interfész megvalósítását).
Ez lehetővé teszi, hogy rugalmasabb és kevésbé kötött kódot írjunk, mivel a típusok és az interfészek nem függenek közvetlenül egymástól.
Példa:
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) {
// olvasási megvalósítás
return 0, nil
}
func main() {
var r Reader = MyReader{} // nem-nyilvánvaló interfész megvalósítás
fmt.Println(r)
}
Szintén, a Go nyelvben nincs osztályöröklés, az interfészeket polimorfizmusra és összetételre használják, ami megkülönbözteti őket sok más nyelvtől.