Junior — Middle
Mi a különbség a Go nyelvben az interfész és mely tulajdonságait kell tudni?
sobes.tech MI
Válasz az MI-től
Go nyelven az interfész egy olyan metódusok halmaza, amelyeket egy típusnak meg kell valósítania ahhoz, hogy megfeleljen ennek az interfésznek. A Go nyelvű interfészek jellemzői:
- Implicit megvalósítás: egy típus akkor tekinthető, hogy megvalósítja az interfészt, ha rendelkezik az összes metódussal, anélkül, hogy kifejezetten deklarálná.
- Az interfészek a viselkedést írják le, nem az adatstruktúrát.
- Üres interfész (
interface{}) — metódus nélküli interfész, amely bármilyen típus értékét tartalmazhatja. - Az interfészek beágyazhatók, több interfész metódusait egyesítve.
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{} // A MyReader implicit módon valósítja meg a Reader-t
fmt.Println(r)
}