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