Sobes.tech
Junior — Middle

Чӣ тавр муайян кардан мумкин аст, ки структураи муайян иҷрои интерфейси муайянро дорад?

sobes.tech AI

Ҷавоб аз AI

Дар Go, иҷрои интерфейс ба таври ғайримустақим санҷида мешавад: агар намуд ҳамаи усулҳои дар интерфейс зикршуда дошта бошад, он автоматӣ онро иҷро мекунад.

Барои муайян кардани он ки оё структура иҷрои интерфейсро дорад, шумо метавонед:

  1. кӯшиш кунед, ки намунаи структураро ба тағйирёбандаи навъи интерфейс таъин кунед — агар компилятсия муваффақона гузарад, маънои онро дорад, ки структура интерфейсро иҷро мекунад.
  2. Бо истифода аз санҷиши статикӣ бо _var _:
var _ MyInterface = (*MyStruct)(nil)

Агар ин код бе хатогӣ компилирова шавад, маънои онро дорад, ки MyStruct интерфейсро MyInterface иҷро мекунад.

Масалан:

type MyInterface interface {
    DoSomething()
}

type MyStruct struct {}

func (m *MyStruct) DoSomething() {
    // иҷрои
}

// Санҷиши иҷрои интерфейс
var _ MyInterface = (*MyStruct)(nil)

Бинобар ин, дар Go лозим нест, ки иҷрои интерфейсро ба таври ошкор нишон диҳед — танҳо бояд ҳамаи усулҳои онро иҷро кунед.