Sobes.tech
Junior — Middle

Jaká funkce plní roli proxy v jazyce Go?

sobes.tech AI

Odpověď od AI

V jazyce Go neexistuje žádná vestavěná funkce s názvem "proxy" jako taková. Role proxy serveru nebo proxy objektu je však obvykle implementována pomocí rozhraní a struktur, které zachycují volání a mohou měnit chování.

Například, pro vytvoření proxy lze definovat strukturu, která obsahuje odkaz na jiný objekt a implementuje stejné metody, přidávající další logiku:

type Service interface {
    DoSomething() string
}

type RealService struct {}

func (r *RealService) DoSomething() string {
    return "Reálná služba dělá něco"
}

// Proxy implementuje stejné rozhraní a přidává logiku

type Proxy struct {
    realService Service
}

func (p *Proxy) DoSomething() string {
    // Další logika před voláním
    fmt.Println("Proxy: před voláním")
    result := p.realService.DoSomething()
    // Další logika po volání
    fmt.Println("Proxy: po volání")
    return result
}

Tímto způsobem je role proxy v Go realizována pomocí kompozice a rozhraní, nikoli pomocí nějaké konkrétní funkce.