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 классикалык мурас алуу татаалдыгысыз, интерфейстер жана композицияга негизделген жөнөкөй жана ийкемдүү объект-бакайган программалоо моделин сунуштайт.