Sobes.tech
Junior — Middle

Ինչպես է իրականացված օբյեկտային ուղղված կառուցվածքը Go լեզվում և ինչպես է այն տարբերվում դասականից?

sobes.tech AI

Պատասխան AI-ից

Go լեզվում օբյեկտ-կողմնորոշված ծրագրավորումը իրականացնում է կոմպոզիցիայի և ինտերֆեյսների միջոցով, ոչ թե դասերի և ժառանգության, ինչպես դասական OOP-ում:

Հիմնական տարբերությունները՝

  • Դասերի բացակայություն՝ 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-ն առաջարկում է ավելի պարզ և ճկուն օբյեկտ-կողմնորոշված ծրագրավորման մոդել, որը հիմնված է ինտերֆեյսների և կոմպոզիցիայի վրա, առանց դասական ժառանգության բարդությունների։