Sobes.tech
Junior — Middle

Je možné implementovať mechanizmus dedičstva v jazyku Go?

sobes.tech AI

Odpoveď od AI

V jeziku Go ne obstaja klasično dedovanje, kot v objektno usmerjenih jezikih, kot sta Java ali C++. Namesto tega Go uporablja kompozicijo in embedding (vdelavo) struktur za ponovno uporabo kode in razširitev funkcionalnosti.

Na primer, lahko vdelate eno strukturo v drugo, in metode vdelane strukture bodo dostopne prek zunanje strukture:

package main
import "fmt"

type Animal struct {
    Name string
}

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

type Dog struct {
    Animal // vdelava strukture Animal
}

func main() {
    d := Dog{Animal{Name: "Bobic"}}
    d.Speak() // pokliče metodo Speak strukture Animal
}

Na ta način v Go dosežemo vedenje, podobno dedovanju, vendar se to izvaja preko kompozicije, kar spodbuja bolj prilagodljiv in preprost dizajn.