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