11. Tips and Tricks

最后更新于:2022-04-01 03:04:18

# 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") // ... } ~~~
';