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 тилинде интерфейстин так көрсөтүлүшү талап кылынбайт — анын бардык ыкмаларын ишке ашыруу жетиштүү.