Sobes.tech
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 аркылуу мураска окшош эффектке жетишип, классикалык иерархиянын кыйынчылыктарынан качат.