Sobes.tech
Junior — Middle

Объект-бағдарланған бағдарламалауда деректер құрылымы белгіленген интерфейсті жүзеге асырмаса, қандай салдарлар пайда болады?

sobes.tech AI

AI-дан жауап

Go тілінде интерфейстер жасырын түрде жүзеге асырылады: егер құрылым интерфейс әдістерін қамтыса, ол оны жүзеге асырады. Егер құрылым берілген интерфейсті жүзеге асырмаса, онда:

  • Компилятор бұл құрылымды интерфейс типі ретінде пайдалануға тырысқанда қате шығарады.
  • Бұл орындалу уақытындағы қателерді болдырмайды, себебі Go интерфейстерге сәйкестігін қатаң тексереді.

Мысалы, егер сізде интерфейс бар болса:

type Reader interface {
    Read(p []byte) (n int, err error)
}

Және құрылым:

type MyStruct struct {}

// Read әдісі жоқ, сондықтан MyStruct Reader-ді жүзеге асырмайды

MyStruct-ты Reader типіндегі айнымалыға тағайындау компиляция қатесін тудырады.

Осылайша, егер құрылым интерфейсті жүзеге асырмаса, оны интерфейс күтілген жерлерде пайдалана алмайсыз, бұл бағдарламада логикалық қателердің алдын алады.