Sobes.tech
Junior — Middle

Kāda funkcija veic proxy lomu Go valodā?

sobes.tech AI

Atbilde no AI

Go valodā nav iebūvētas funkcijas ar nosaukumu "proxy" kā tādu. Tomēr, proxy servera vai proxy objekta lomu parasti īsteno ar interfeisiem un struktūrām, kas pārņem izsaukumus un var mainīt uzvedību.

Piemēram, lai izveidotu proxy, var definēt struktūru, kas satur atsauci uz citu objektu un īsteno tās pašas metodes, pievienojot papildu loģiku:

type Service interface {
    DoSomething() string
}

type RealService struct {}

func (r *RealService) DoSomething() string {
    return "Reālā pakalpojuma darīšana"
}

// Proxy īsteno to pašu interfeisu un pievieno loģiku

type Proxy struct {
    realService Service
}

func (p *Proxy) DoSomething() string {
    // Papildu loģika pirms izsaukuma
    fmt.Println("Proxy: pirms izsaukuma")
    result := p.realService.DoSomething()
    // Papildu loģika pēc izsaukuma
    fmt.Println("Proxy: pēc izsaukuma")
    return result
}

Tādējādi, proxy loma Go valodā tiek īstenota ar kompozīciju un interfeisiem, nevis ar kādu konkrētu funkciju.