Sobes.tech
Junior — Middle

Aké dôsledky vzniknú, ak dátová štruktúra neimplementuje zadané rozhranie v objektovo orientovanom programovaní?

sobes.tech AI

Odpoveď od AI

V jazyku Go sú rozhrania implementované nepriame: ak štruktúra obsahuje všetky metódy rozhrania, implementuje ho. Ak štruktúra neimplementuje dané rozhranie:

  • Kompilátor spôsobí chybu pri pokuse použiť túto štruktúru ako hodnotu typu rozhrania.
  • To zabraňuje chybám za behu, pretože Go prísne kontroluje zhodu s rozhraniami počas kompilácie.

Napríklad, ak máte rozhranie:

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

A štruktúru:

type MyStruct struct {}

// Nemá metódu Read, takže MyStruct neimplementuje Reader

Pokus o priradenie MyStruct do premennej typu Reader spôsobí chybu kompilácie.

Týmto spôsobom, ak štruktúra neimplementuje rozhranie, nemôžete ju použiť tam, kde sa očakáva toto rozhranie, čo pomáha predchádzať logickým chybám v programe.