Junior — Middle
Чӣ тавр ба компилятор нишон додан, ки як синфи муайян як интерфейси муайянро иҷро мекунад?
sobes.tech AI
Ҷавоб аз AI
Дар Go, иҷрои интерфейса рӯшан нест: агар навъи иҷрои ҳамаи усулҳои интерфейсро дошта бошад, он ба таври худкор ҳамчун иҷрокунандаи он ҳисобида мешавад. Ниёз нест, ки онро ба таври равшан нишон диҳед.
Масалан:
package main
import "fmt"
type Speaker interface {
Speak() string
}
type Dog struct {}
func (d Dog) Speak() string {
return "Гав!"
}
func main() {
var s Speaker
d := Dog{}
s = d // Dog интерфейси Speaker-ро иҷро мекунад
fmt.Println(s.Speak())
}
Агар хоҳед, ки ба таври равшан санҷед, ки навъ интерфейсро иҷро мекунад, метавонед санҷиши компиляторро истифода баред:
var _ Speaker = (*Dog)(nil) // Компилятор санҷиш мекунад, ки *Dog интерфейси Speaker-ро иҷро мекунад
Инчунин, дар Go, интерфейсҳо автоматӣ иҷро мешаванд, вақте ки усулҳои зарурӣ мавҷуданд.