🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 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") // ... } ~~~