Sobes.tech
Junior — Middle

Kako je implementirana objektnо-orijentisana struktura u jeziku Go i kako se razlikuje od klasične?

sobes.tech АИ

Одговор од АИ

U Go, objektno-orijentisano programiranje se implementira putem kompozicije i interfejsa, a ne putem klasa i nasledjivanja, kao u klasičnom OOP.

Glavne razlike:

  • Nedostatak klasa: U Go nema klasa, umesto toga se koriste strukture (struct) koje sadrže polja i metode.
  • Kompozicija umesto nasledjivanja: Umesto nasledjivanja struktura, može se uključiti jedna struktura u drugu, što omogućava ponovno korišćenje koda.
  • Interfejsi: Interfejsi u Go definišu skup metoda koje struktura mora implementirati. Tipovi automatski implementiraju interfejs ako imaju potrebne metode, bez eksplicitne deklaracije.

Primer:

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())
    }
}

Na ovaj način, Go nudi jednostavniji i fleksibilniji model objektno-orijentisanog programiranja, zasnovan na interfejsima i kompoziciji, bez složenosti klasičnog nasledjivanja.