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-ում հասնում ենք ժառանգության նման վարքագծի, բայց այն իրականացնում է կոմպոզիցիայի միջոցով, ինչը խթանում է ավելի ճկուն և պարզ դիզայն։