Sobes.tech
Junior — Middle

Este posibil să implementați un mecanism de moștenire în limbajul Go?

sobes.tech AI

Răspuns de la AI

În limbajul Go nu există moștenire clasică, ca în limbajele orientate pe obiecte precum Java sau C++. În schimb, Go utilizează compoziția și embedding-ul (incorporarea) structurilor pentru reutilizarea codului și extinderea funcționalităților.

De exemplu, poți încorpora o structură într-alta, iar metodele structurii încorporate vor fi disponibile prin structura externă:

package main
import "fmt"

type Animal struct {
    Name string
}

func (a Animal) Speak() {
    fmt.Println(a.Name, "vorbește")
}

type Dog struct {
    Animal // încorporarea structurii Animal
}

func main() {
    d := Dog{Animal{Name: "Bobic"}}
    d.Speak() // va apela metoda Speak a structurii Animal
}

Astfel, în Go se obține un comportament similar cu moștenirea, dar realizat prin compoziție, ceea ce favorizează un design mai flexibil și mai simplu.