Sobes.tech
Junior — Middle

Megvalósítható öröklődési mechanizmus a Go nyelvben?

sobes.tech MI

Válasz az MI-től

A Go nyelvben nincs klasszikus öröklődés, mint az objektumorientált nyelvekben, például Java vagy C++. Ehelyett a Go a struktúrák kompozícióját és embeddingjét (beágyazását) használja a kód újrafelhasználására és a funkcionalitás bővítésére.

Például egy struktúrát beágyazhatunk egy másikba, és az beágyazott struktúra metódusai elérhetővé válnak a külső struktúrán keresztül:

package main
import "fmt"

type Animal struct {
    Name string
}

func (a Animal) Speak() {
    fmt.Println(a.Name, "beszél")
}

type Dog struct {
    Animal // struktúra beágyazása
}

func main() {
    d := Dog{Animal{Name: "Bobic"}}
    d.Speak() // meghívja az Animal struktúra Speak metódusát
}

Így a Go-ban elérhető egy viselkedés, ami hasonlít az öröklődéshez, de azt kompozícióval valósítják meg, ami rugalmasabb és egyszerűbb tervezést tesz lehetővé.