Единственото друго решение, което видях, например в „Предаване на контекст към интерфейсни методи“ е:
създайте
struct
който приема вграден контекст и нашияhandler
type и ние все още отговаряме наhttp.Handler
интерфейс благодарение наServeHTTP
.
Във вашия случай, struct
ще включва pool
и handler
функция.
type appContext struct {
pool Pool
}
type appHandler struct {
*appContext
h func(a *appContext, w http.ResponseWriter, r *http.Request) (int, error)
}
func (ah appHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
...
}
func main() {
context := &appContext{
pool: ...,
// any other data
}
}