Junior — Middle
Hogyan jelezhetjük a fordítónak, hogy egy adott osztály egy adott interfészt valósít meg?
sobes.tech MI
Válasz az MI-től
Go nyelvben az interfész megvalósítása implicit módon történik: ha egy típus megvalósítja az összes módszert egy interfésznek, akkor automatikusan annak megvalósítójának számít. Nincs szükség erre kifejezetten utalni.
Példa:
package main
import "fmt"
type Speaker interface {
Speak() string
}
type Dog struct {}
func (d Dog) Speak() string {
return "Vau!"
}
func main() {
var s Speaker
d := Dog{}
s = d // Dog megvalósítja a Speaker interfészt
fmt.Println(s.Speak())
}
Ha kifejezetten ellenőrizni szeretnéd, hogy egy típus megvalósítja-e az interfészt, használhatod egy fordítási ellenőrzést:
var _ Speaker = (*Dog)(nil) // A fordító ellenőrzi, hogy a *Dog megvalósítja-e a Speaker-t
Így a Go-ban az interfészek automatikusan megvalósulnak, ha a szükséges módszerek elérhetőek.