पर तर्क कैसे पास करूं? मैं वैश्विक ऑब्जेक्ट होने के बजाय, अपने हैंडलर के साथ अपना डेटाबेस ऑब्जेक्ट पास करने का प्रयास कर रहा हूं। लेकिन मुझे नहीं पता कि यह संभव है, मैं गोरिल्ला मक्स पैकेज का उपयोग कर रहा हूं, और मैं देख सकता हूं कि यह एक दूसरे पैरा के रूप में बंद हो जाता है।मैं अपने हैंडलर
// 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)
}
जो तब पैराम्स को परिभाषित करता है जो मैं उपयोग कर सकता हूं, आदर्श रूप में मैं इस तरह का तीसरा param चाहता हूं।
// In my main
router.HandleFunc("https://stackoverflow.com/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"])
}
क्या कोई कामकाज है? या मुझे वैश्विक डीबी ऑब्जेक्ट चाहिए? मैं जाने के लिए नया हूं, इसलिए विस्तार से एक संभावित उत्तर की व्याख्या करें।
http://stackoverflow.com/a/26106655/6309 आप कुछ विचार भी दे सकते हैं। – VonC
@ वॉनसी मैंने वास्तव में http://simonsdotnet.wordpress.com/2014/09/06/extending-gos-http-handlers/ की कोशिश की लेकिन पाया कि यह गोरिल्ला के साथ काम नहीं करता है, क्योंकि http पैकेज सिर्फ ServeHTTP चाहता है, लेकिन गोरिल्ला विशिष्ट पैरा के साथ एक func चाहता है। मैं गलत हो सकता है। – MartinElvar