Junior — Middle
Мурас алуу принцибин жана ал Go тилинде кандай ишке ашырылганын түшүндүрө аласызбы?
sobes.tech AI
AIден жооп
Go тилинде башка объект-ориенттелген тилдердегидей классикалык мурас жок. Ал ордуна, Go композицияны жана embedding колдонуп, кодду кайра колдонуу жана функционалдуулукту кеңейтүү үчүн пайдаланады.
Embedding бир түрдү (структураны) башкасына кошууга мүмкүндүк берет, жана кошулган түрдүн ыкмалары сырткы түр үчүн жеткиликтүү болот, бул мураска окшош.
Мисал:
type Animal struct {
Name string
}
func (a Animal) Speak() string {
return "..."
}
// Animalды Dogго кошобуз
type Dog struct {
Animal
}
func (d Dog) Speak() string {
return "Гав!"
}
func main() {
dog := Dog{Animal{Name: "Buddy"}}
fmt.Println(dog.Name) // Animal талаасына кирүү
fmt.Println(dog.Speak()) // Өзгөртүлгөн ыкма
}
Ошентип, Go композиция жана embedding аркылуу мураска окшош эффектке жетишип, классикалык иерархиянын кыйынчылыктарынан качат.