多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# Tips and Tricks ## Wrap a http.HandlerFunc closure Sometimes you want to pass data to a http.HandlerFunc on initialization. Thiscan easily be done by creating a closure of the `http.HandlerFunc`: ~~~ func MyHandler(database *sql.DB) http.Handler { return http.HandlerFunc(func(rw http.ResponseWriter, r *http.Request) { // you now have access to the *sql.DB here }) } ~~~ ## Using `gorilla/context` for request-specific data It is pretty often that we need to store and retrieve data that is specific tothe current HTTP request. Use `gorilla/context` to map values and retrieve themlater. It contains a global mutex on a map of request objects. ~~~ func MyHandler(w http.ResponseWriter, r *http.Request) { val := context.Get(r, "myKey") // returns ("bar", true) val, ok := context.GetOk(r, "myKey") // ... } ~~~