Junior — Middle
Kaip parodyti kompiliatoriui, kad tam tikras klasė įgyvendina tam tikrą sąsają?
sobes.tech AI
Atsakymas iš AI
Go kalboje sąsajos įgyvendinimas vyksta neaiškiai: jei tipas įgyvendina visas sąsajos metodus, jis automatiškai laikomas įgyvendinančiu tą sąsają. Tam nereikia aiškiai nurodyti.
Pavyzdys:
package main
import "fmt"
type Speaker interface {
Speak() string
}
type Dog struct {}
func (d Dog) Speak() string {
return "Au!"
}
func main() {
var s Speaker
d := Dog{}
s = d // Dog įgyvendina Speaker sąsają
fmt.Println(s.Speak())
}
Jei norite aiškiai patikrinti, ar tipas įgyvendina sąsają, galite naudoti kompiliatoriaus patikrinimą:
var _ Speaker = (*Dog)(nil) // Kompiliatorius patikrins, ar *Dog įgyvendina Speaker
Taip, Go kalboje sąsajos įgyvendinamos automatiškai, jei yra reikalingi metodai.