Sobes.tech
Middle

Kako se mogu koristiti ugrađene strukture u Go za imitaciju nasleđivanja? Šta to donosi i zašto se koristi?

sobes.tech АИ

Одговор од АИ

У Go нема класично наслеђивање као у објектно оријентисаним језицима, али уграђене структуре (embedding) омогућавају његову имитацију.

Када једна структура укључује другу као безимено поље, методе уграђене структуре постају доступне за спољашњу структуру, што је слично наслеђивању.

Ово пружа:

  • Поновну употребу кода
  • Композицију уместо наслеђивања
  • Могућност проширења понашања уграђене структуре

Пример:

type Animal struct {
    Name string
}

func (a Animal) Speak() string {
    return "..."
}

// Уграђујемо Animal у Dog
type Dog struct {
    Animal
}

func (d Dog) Speak() string {
    return "Woof!"
}

func main() {
    d := Dog{Animal{Name: "Buddy"}}
    fmt.Println(d.Name)      // приступ пољу Animal
    fmt.Println(d.Speak())   // позив преоптерећене методе
}

Користи се за стварање сложенијих типова на основу једноставних, без строге хијерархије класа.