Sobes.tech
Junior — Middle

Կարո՞ղ է Go լեզվում ժառանգության մեխանիզմը իրականացնել։

sobes.tech AI

Պատասխան AI-ից

Go լեզվում չկա դասական ժառանգություն, ինչպես օբյեկտային ուղղված լեզուներում՝ Java կամ C++։ Փոխարենը, Go-ն օգտագործում է կառուցվածքների կոմպոզիցիա և embedding (ներդնում)՝ կոդի վերօգտագործման և գործառնականության ընդլայնման համար։

Օրինակ, կարելի է մի կառուցվածք ներդնել մյուսի մեջ, և ներդրված կառուցվածքի մեթոդները հասանելի կլինեն արտաքին կառուցվածքի միջոցով՝

package main
import "fmt"

type Animal struct {
    Name string
}

func (a Animal) Speak() {
    fmt.Println(a.Name, "խոսում է")
}

type Dog struct {
    Animal // կառուցվածքի ներդնում
}

func main() {
    d := Dog{Animal{Name: "Bobic"}}
    d.Speak() // կանչում է Animal կառուցվածքի Speak մեթոդը
}

Այս կերպ, Go-ում հասնում ենք ժառանգության նման վարքագծի, բայց այն իրականացնում է կոմպոզիցիայի միջոցով, ինչը խթանում է ավելի ճկուն և պարզ դիզայն։