Junior — Middle
Чӣ тавр муайян кардан мумкин аст, ки структураи муайян иҷрои интерфейси муайянро дорад?
sobes.tech AI
Ҷавоб аз AI
Дар Go, иҷрои интерфейс ба таври ғайримустақим санҷида мешавад: агар намуд ҳамаи усулҳои дар интерфейс зикршуда дошта бошад, он автоматӣ онро иҷро мекунад.
Барои муайян кардани он ки оё структура иҷрои интерфейсро дорад, шумо метавонед:
- кӯшиш кунед, ки намунаи структураро ба тағйирёбандаи навъи интерфейс таъин кунед — агар компилятсия муваффақона гузарад, маънои онро дорад, ки структура интерфейсро иҷро мекунад.
- Бо истифода аз санҷиши статикӣ бо _var _:
var _ MyInterface = (*MyStruct)(nil)
Агар ин код бе хатогӣ компилирова шавад, маънои онро дорад, ки MyStruct интерфейсро MyInterface иҷро мекунад.
Масалан:
type MyInterface interface {
DoSomething()
}
type MyStruct struct {}
func (m *MyStruct) DoSomething() {
// иҷрои
}
// Санҷиши иҷрои интерфейс
var _ MyInterface = (*MyStruct)(nil)
Бинобар ин, дар Go лозим нест, ки иҷрои интерфейсро ба таври ошкор нишон диҳед — танҳо бояд ҳамаи усулҳои онро иҷро кунед.