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