Sobes.tech
Junior — Middle

Go dilində obyekt yönümlü struktur necə həyata keçirilir və klassikdən necə fərqlənir?

sobes.tech Süni İntellekt

AI-dan cavab

Go dilində obyekt yönümlü proqramlaşdırma, klasslar və irsiyyət yerinə, kompozisiya və interfeyslər vasitəsilə həyata keçirilir.

Əsas fərqlər:

  • Klassların olmaması: Go-da klasslar yoxdur, əvəzinə, sahələr və metodlar ehtiva edən strukturlar (struct) istifadə olunur.
  • İrsiyyət yerinə kompozisiya: Strukturun irsi alınması yerinə, onu başqa bir struktur daxilində yerləşdirmək mümkündür, bu da kodun təkrar istifadəsini təmin edir.
  • Interfeyslər: Go-da interfeyslər, strukturun həyata keçirməli olduğu metodlar toplusunu müəyyən edir. Tiplər, lazım olan metodlara malikdirsə, avtomatik olaraq interfeysi həyata keçirir, açıq şəkildə bildirməyə ehtiyac yoxdur.

Nümunə:

package main
import "fmt"

type Animal interface {
    Speak() string
}

type Dog struct {}

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

type Cat struct {}

func (c Cat) Speak() string {
    return "Meow!"
}

func main() {
    animals := []Animal{Dog{}, Cat{}}
    for _, a := range animals {
        fmt.Println(a.Speak())
    }
}

Beləliklə, Go, klassik irsiyyətin mürəkkəbliyi olmadan, interfeyslər və kompozisiya əsasında daha sadə və çevik obyekt yönümlü proqramlaşdırma modeli təklif edir.