Junior — Middle
Jak wskazać kompilatorowi, że konkretna klasa implementuje określony interfejs?
sobes.tech AI
Odpowiedź od AI
W Go implementacja interfejsu odbywa się niejawnie: jeśli typ implementuje wszystkie metody interfejsu, jest automatycznie uważany za implementujący ten interfejs. Nie ma potrzeby wyraźnego wskazywania tego.
Przykład:
package main
import "fmt"
type Speaker interface {
Speak() string
}
type Dog struct {}
func (d Dog) Speak() string {
return "Hau!"
}
func main() {
var s Speaker
d := Dog{}
s = d // Dog implementuje interfejs Speaker
fmt.Println(s.Speak())
}
Jeśli chcesz wyraźnie sprawdzić, czy typ implementuje interfejs, możesz użyć sprawdzenia kompilacji:
var _ Speaker = (*Dog)(nil) // Kompilator sprawdzi, czy *Dog implementuje Speaker
W ten sposób w Go interfejsy są implementowane automatycznie, gdy dostępne są odpowiednie metody.