Sobes.tech
Junior — Middle

Може ли се реализовати механизам наслеђивања у језику Go?

sobes.tech АИ

Одговор од АИ

U jeziku Go ne postoji klasično nasleđivanje, kao u objektno-orijentisanim jezicima poput Jave ili C++. Umesto toga, Go koristi kompoziciju i embedding (ugrađivanje) struktura za ponovnu upotrebu koda i proširenje funkcionalnosti.

Na primer, možete ugraditi jednu strukturu u drugu, i metode ugrađene strukture će biti dostupne putem spoljašnje strukture:

package main
import "fmt"

type Animal struct {
    Name string
}

func (a Animal) Speak() {
    fmt.Println(a.Name, "priča")
}

type Dog struct {
    Animal // ugradnja strukture Animal
}

func main() {
    d := Dog{Animal{Name: "Bobic"}}
    d.Speak() // poziva metodu Speak strukture Animal
}

Na ovaj način, u Go se postiže ponašanje slično nasleđivanju, ali se realizuje putem kompozicije, što podstiče fleksibilniji i jednostavniji dizajn.