Sobes.tech
Junior — Middle

Kas on võimalik realiseerida pärimismehhanismi Go keeles?

sobes.tech AI

Vastus AI-lt

Go keeles puudub klassikaline pärimine nagu objektorienteeritud keeltes nagu Java või C++. Selle asemel kasutab Go struktuuride kompositsiooni ja embeddingut (sisseehitamist) koodi taaskasutamiseks ja funktsionaalsuse laiendamiseks.

Näiteks saab ühte struktuuri sisestada teise, ning sisestatud struktuuri meetodid saavad olla kättesaadavad välise struktuuri kaudu:

package main
import "fmt"

type Animal struct {
    Name string
}

func (a Animal) Speak() {
    fmt.Println(a.Name, "räägib")
}

type Dog struct {
    Animal // sisestamine
}

func main() {
    d := Dog{Animal{Name: "Bobic"}}
    d.Speak() // kutsub välja Animal struktuuri Speak meetodi
}

Sellisel viisil saavutab Go käitumise, mis sarnaneb pärimisega, kuid see realiseeritakse kompositsiooni kaudu, mis soodustab paindlikumat ja lihtsamat disaini.