我看到的唯一其他解决方案例如在“将上下文传递给接口方法”中是:
创建一个struct
接受嵌入式上下文和我们的handler
类型的,并且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
}
}