Sobes.tech
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ę.