Sobes.tech
Junior — Middle

Ako je v jazyku Go implementovan objektovo orientovaný štruktúra a ako sa líši od klasickej?

sobes.tech AI

Odpoveď od AI

V jazyku Go je objektovo orientované programovanie realizované prostredníctvom kompozície a rozhraní, nie cez triedy a dedičstvo, ako v klasickom OOP.

Hlavné rozdiely:

  • Absencia tried: V Go nie sú triedy, namiesto toho sa používajú štruktúry (struct), ktoré obsahujú polia a metódy.
  • Kompozícia namiesto dedičstva: Namiesto dedičstva štruktúr je možné zahrnúť jednu štruktúru do druhej, čo umožňuje opätovné použitie kódu.
  • Rozhrania: Rozhrania v Go definujú súbor metód, ktoré musí implementovať štruktúra. Typy automaticky implementujú rozhranie, ak majú potrebné metódy, bez explicitného vyhlásenia.

Príklad:

package main
import "fmt"

type Animal interface {
    Speak() string
}

type Dog struct {}

func (d Dog) Speak() string {
    return "Woof!"
}

type Cat struct {}

func (c Cat) Speak() string {
    return "Meow!"
}

func main() {
    animals := []Animal{Dog{}, Cat{}}
    for _, a := range animals {
        fmt.Println(a.Speak())
    }
}

Takto Go ponúka jednoduchší a flexibilnejší model objektovo orientovaného programovania, založený na rozhraniach a kompozícii, bez zložitostí klasického dedičstva.