Sobes.tech
Junior — Middle

Go tilida proxy rolini bajaradigan funktsiya nima?

sobes.tech AI

AIdan javob

Go tilida "proxy" nomli o'rnatilgan funktsiya mavjud emas. Biroq, proksi server yoki proksi ob'ektining roli odatda interfeyslar va tuzilmalar yordamida amalga oshiriladi, ular chaqiruvlarni ushlab, xatti-harakatni o'zgartirishi mumkin.

Masalan, proksi yaratish uchun, boshqa ob'ektga havolani o'z ichiga olgan va shuningdek, ayni metodlarni amalga oshiradigan tuzilmani aniqlash mumkin, qo'shimcha logika qo'shish:

type Service interface {
    DoSomething() string
}

type RealService struct {}

func (r *RealService) DoSomething() string {
    return "Real service doing something"
}

// Proxy shuningdek, bir xil interfeysni amalga oshiradi va logika qo'shadi

type Proxy struct {
    realService Service
}

func (p *Proxy) DoSomething() string {
    // Qo'shimcha logika chaqirishdan oldin
    fmt.Println("Proxy: before call")
    result := p.realService.DoSomething()
    // Qo'shimcha logika chaqirishdan keyin
    fmt.Println("Proxy: after call")
    return result
}

Shu tarzda, Go'da proksi roli kompozitsiya va interfeyslar orqali amalga oshiriladi, maxsus funktsiya orqali emas.