I'm trying to use mux and set some handlers. I have the following handler
func homePage(w http.ResponseWriter, r *http.Request) {
// Some code
}
func main() {
router := mux.NewRouter().StrictSlash(true)
router.HandleFunc("/", homePage)
log.Fatal(http.ListenAndServe(":8090", router))
}
Is there any way to pass more arguments to the handler function so that I can do more logic? I mean add an argument to homePage
function called message
. Something like this...
func homePage(w http.ResponseWriter, r *http.Request, message string) {
// Do some logic with message
// Rest of code
}
func main() {
router := mux.NewRouter().StrictSlash(true)
router.HandleFunc("/", homePage("hello"))
log.Fatal(http.ListenAndServe(":8090", router))
}
A common technique for doing this is to return your handlers from a function that accepts any additional parameters you want like this:
package main
import (
"net/http"
)
func homePage(msg string) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
// Do stuff with "msg"
w.Write([]byte(msg))
}
}
func main() {
http.HandleFunc("/", homePage("message"))
http.ListenAndServe(":8090", nil)
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With