Sobes.tech
Junior — Middle

Kokios pasekmės kyla, jei duomenų struktūra neįgyvendina duoto sąsajos objektiniame programavime?

sobes.tech AI

Atsakymas iš AI

Go kalboje są interface'ai įgyvendinami netiesiogiai: jei struktūra turi visas sąsajos metodus, ji ją įgyvendina. Jei struktūra neįgyvendina duotojo interfeiso:

  • Kompiliatorius išmes klaidą bandydamas naudoti šią struktūrą kaip interfeiso tipo reikšmę.
  • Tai užkerta kelią vykdymo klaidoms, nes Go griežtai tikrina atitiktį interfeisams kompiliacijos metu.

Pavyzdžiui, jei turite interfeisą:

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

Ir struktūrą:

type MyStruct struct {}

// Nėra Read metodo, todėl MyStruct neįgyvendina Reader

Bandymas priskirti MyStruct kaip Reader tipo kintamąjį sukels kompiliatoriaus klaidą.

Taip, jei struktūra neįgyvendina interfeiso, jos negalima naudoti ten, kur tikimasi šio interfeiso, kas padeda išvengti loginės klaidos programoje.