Sobes.tech
Junior — Middle

Go tilida ob'ektga yo'naltirilgan tuzilma qanday amalga oshirilgan va u qanday farq qiladi?

sobes.tech AI

AIdan javob

Go tilida ob'ektga yo'naltirilgan dasturlash kompozitsiya va interfeyslar orqali amalga oshiriladi, klasslar va meros olish orqali emas, klassik OOP dagidek.

Asosiy farqlar:

  • Klasslar yo'qligi: Go da klasslar yo'q, o'rniga maydonlar va metodlarni o'z ichiga olgan tuzilmalar (struct) ishlatiladi.
  • Meros o'rniga kompozitsiya: Tuzilmani meros qilib olish o'rniga, uni boshqa tuzilma ichiga kiritish mumkin, bu kodni qayta ishlatishni ta'minlaydi.
  • Interfeyslar: Go da interfeyslar, tuzilma bajarishi kerak bo'lgan metodlar to'plamini belgilaydi. Turlar, agar kerakli metodlarga ega bo'lsa, avtomatik ravishda interfeysni amalga oshiradi, aniq belgilash shart emas.

Misol:

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

Shu tarzda, Go oddiy va moslashuvchan ob'ektga yo'naltirilgan dasturlash modelini taklif qiladi, bu interfeyslar va kompozitsiyaga asoslangan, klassik meros olish murakkabliklarisiz.