Junior — Middle
Ako naznačiť prekladaču, že konkrétna trieda implementuje určitý rozhranie?
sobes.tech AI
Odpoveď od AI
V Go, implementácia rozhrania prebieha implicitne: ak typ implementuje všetky metódy rozhrania, je automaticky považovaný za jeho implementáciu. Nie je potrebné to výslovne uvádzať.
Príklad:
package main
import "fmt"
type Speaker interface {
Speak() string
}
type Dog struct {}
func (d Dog) Speak() string {
return "Haf!"
}
func main() {
var s Speaker
d := Dog{}
s = d // Dog implementuje rozhranie Speaker
fmt.Println(s.Speak())
}
Ak chcete explicitne skontrolovať, či typ implementuje rozhranie, môžete použiť kontrolu kompilácie:
var _ Speaker = (*Dog)(nil) // Kompilátor skontroluje, či *Dog implementuje Speaker
Týmto spôsobom sú v Go rozhrania implementované automaticky, ak sú prítomné potrebné metódy.