title: How do I pass arguments to my handler
body: <p>I am trying to pass my database object along to my handlers, instead of having a global object. But I don't know if this is possible, I'm using Gorilla Mux package, and I can see that it takes a closure as a second param.</p>
  
  <pre><code>// https://github.com/gorilla/mux/blob/master/mux.go#L174
  // HandleFunc registers a new route with a matcher for the URL path.
  // See Route.Path() and Route.HandlerFunc().
  func (r *Router) HandleFunc(path string, f func(http.ResponseWriter,
      *http.Request)) *Route {
      return r.NewRoute().Path(path).HandlerFunc(f)
  }
  </code></pre>
  
  <p>Which then defines the params i can use, ideally i would like to have a third param like this.</p>
  
  <pre><code>// In my main
  router.HandleFunc("/users/{id}", showUserHandler).Methods("GET")
  
  func showUserHandler(w http.ResponseWriter, r *http.Request, db *gorm.DB) {
      fmt.Fprintf(w, "We should fetch the user with id %s", vars["id"])
  }
  </code></pre>
  
  <p>Is there a workaround? Or do I need a global db object? I am new to Go, so please explain a potential answer in detail.</p>