Sobes.tech
Junior — Middle

Кадом вазифа дар забони Go нақши proxy-ро иҷро мекунад?

sobes.tech AI

Ҷавоб аз AI

Дар забони Go ягон функсияи дарунсохт бо номи "proxy" вуҷуд надорад. Аммо, нақши сервери proxy ё объекти proxy одатан бо истифода аз интерфейсҳо ва структураҳое амалӣ карда мешавад, ки занҷирҳоро мегиранд ва метавонанд рафторро тағир диҳанд.

Масалан, барои сохтани proxy, шумо метавонед структураеро муайян кунед, ки истинод ба объекти дигар дорад ва ҳамон методҳоро иҷро мекунад, илова кардани логикаи иловагӣ:

type Service interface {
    DoSomething() string
}

type RealService struct {}

func (r *RealService) DoSomething() string {
    return "Хизматрасонии воқеӣ кор мекунад"
}

// Proxy иҷро мекунад ҳамон интерфейс ва логикаи иловагӣ медиҳад

type Proxy struct {
    realService Service
}

func (p *Proxy) DoSomething() string {
    // Логикаи иловагӣ пеш аз занҷир
    fmt.Println("Proxy: пеш аз занҷир")
    result := p.realService.DoSomething()
    // Логикаи иловагӣ пас аз занҷир
    fmt.Println("Proxy: пас аз занҷир")
    return result
}

Бинобар ин, нақши proxy дар Go тавассути композишн ва интерфейсҳо амалӣ мешавад, на тавассути ягон функсияи махсус.