Sobes.tech
Middle

Go'da ob'ektga yo'naltirilgan model qanday tuzilgan?

sobes.tech AI

AIdan javob

Go'da an'anaviy ob'ektga yo'naltirilgan model va chuqur meroslik hierarxiyasi mavjud emas. O'rniga quyidagilar ishlatiladi:

  • Strukturalar (Structs): Ma'lumot maydonlarini belgilaydi, metodlar bo'lmagan sinflarga o'xshash.

    type Person struct {
        Name string
        Age  int
    }
    
  • Metodlar: Ma'lum bir struktura bilan bog'langan funksiyalar. Ular struktura bilan alohida aniqlanadi.

    func (p Person) Greet() string {
        return "Salom, mening ismim " + p.Name
    }
    
    func (p *Person) CelebrateBirthday() {
        p.Age++
    }
    
    • Qabul qiluvchi qiymat bilan metodlar (masalan, (p Person)) nusxa bilan ishlaydi.
    • Qabul qiluvchi ko'rsatkich bilan metodlar (masalan, (p *Person)) asl struktura bilan ishlaydi va uning maydonlarini o'zgartirish imkonini beradi.
  • Interfeyslar: Metod imzolaridan iborat to'plamlar. Bir tur barcha metodlarni amalga oshirsa, avtomatik ravishda bu interfeysni qanoatlantiradi. Bu Go'da polimorfizmning asosidir.

    type Greeter interface {
        Greet() string
    }
    
    // Person avtomatik ravishda Greeter ni amalga oshiradi
    
  • Kompazitsiya (Incrustatsiya): Meros o'rniga, bir struktura boshqa struktura bilan o'zaro bog'lanishi mumkin, uning maydonlari va metodlariga kirish imkonini beradi.

    type Employee struct {
        Person // Person strukturasini o'z ichiga oladi
        ID     string
    }
    
    func (e Employee) GetID() string {
        return e.ID
    }
    

    Incrustatsiya qilingan maydonlar va metodlar to'g'ridan-to'g'ri mavjud:

    e := Employee{
        Person: Person{Name: "Alice", Age: 30},
        ID:     "E123",
    }
    fmt.Println(e.Name)     // Incrustatsiyalangan Person orqali Name maydoniga kirish
    fmt.Println(e.Greet())  // Incrustatsiyalangan Person orqali Greet metodini chaqirish
    fmt.Println(e.GetID())  // Employee metodini chaqirish
    

Shunday qilib, Go'da ob'ektga yo'naltirilgan model strukturalarning kompozitsiyasi va interfeyslar bilan belgilangan xulq-atvorga asoslangan, klassik meros hierarxiyasiga emas.