Sobes.tech
Junior — Middle

Lze v jazyce Go implementovat mechanismus dědičnosti?

sobes.tech AI

Odpověď od AI

V jazyce Go neexistuje klasické dědičnosti, jako v objektově orientovaných jazycích typu Java nebo C++. Místo toho Go používá kompozici a embedding (vkládání) struktur pro opakované použití kódu a rozšiřování funkcionalit.

Například lze vložit jednu strukturu do jiné a metody vložené struktury budou dostupné přes vnější strukturu:

package main
import "fmt"

type Animal struct {
    Name string
}

func (a Animal) Speak() {
    fmt.Println(a.Name, "říká")
}

type Dog struct {
    Animal // vložení struktury Animal
}

func main() {
    d := Dog{Animal{Name: "Bobic"}}
    d.Speak() // zavolá metodu Speak struktury Animal
}

Tímto způsobem je v Go dosaženo chování podobného dědičnosti, ale je realizováno přes kompozici, což podporuje flexibilnější a jednodušší návrh.