Junior — Middle
Jaką funkcję pełni rola proxy w języku Go?
sobes.tech AI
Odpowiedź od AI
W języku Go nie ma wbudowanej funkcji o nazwie "proxy" jako takiej. Jednak rola serwera proxy lub obiektu proxy jest zwykle realizowana za pomocą interfejsów i struktur, które przechwytują wywołania i mogą zmieniać zachowanie.
Na przykład, aby utworzyć proxy, można zdefiniować strukturę zawierającą odwołanie do innego obiektu i implementującą te same metody, dodając dodatkową logikę:
type Service interface {
DoSomething() string
}
type RealService struct {}
func (r *RealService) DoSomething() string {
return "Real service doing something"
}
// Proxy implementuje ten sam interfejs i dodaje logikę
type Proxy struct {
realService Service
}
func (p *Proxy) DoSomething() string {
// Dodatkowa logika przed wywołaniem
fmt.Println("Proxy: before call")
result := p.realService.DoSomething()
// Dodatkowa logika po wywołaniu
fmt.Println("Proxy: after call")
return result
}
W ten sposób rola proxy w Go jest realizowana przez kompozycję i interfejsy, a nie przez jakąś konkretną funkcję.