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.