A única outra solução que vi, por exemplo, em "Passing Context to Interface Methods" é:
crie umastruct
que aceita um contexto incorporado e nossohandler
tipo, e ainda satisfazemos ohttp.Handler
interface graças aServeHTTP
.
No seu caso, a
struct
incluiria o pool
, e o handler
função. 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
}
}