Sobes.tech
Junior — Middle

Go тіліне объекті-бағытталған құрылым қалай жүзеге асырылған және ол классикалық құрылымнан қалай ерекшеленеді?

sobes.tech AI

AI-дан жауап

Go тілінде объектіге бағытталған құрылым композиция мен интерфейстер арқылы жүзеге асырылады, класс және мұрагерлік арқылы емес, дәстүрлі ООП-дағындай.

Негізгі айырмашылықтар:

  • Класс жоқ: Go тілінде класс жоқ, оның орнына өрістер мен әдістері бар құрылымдар (struct) пайдаланылады.
  • Мұрагерлік орнына композиция: Құрылымдарды мұрагерлікке қосу арқылы кодты қайта пайдалану мүмкіндігі бар.
  • Интерфейстер: Go тіліндегі интерфейстер әдістер жиынтығын анықтайды, оны құрылымдар жүзеге асырады. Егер құрылым қажетті әдістерді қамтыса, ол автоматты түрде интерфейсті жүзеге асырады, нақты көрсету қажет емес.

Мысал:

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())
    }
}

Осылайша, Go тілі интерфейстер мен композицияға негізделген қарапайым әрі икемді объектіге бағытталған модель ұсынады, класс мұрагерлігінің күрделілігінсіз.