在golang中将参数传递给mux处理函数

我正在尝试使用 mux 并设置一些处理程序。我有以下处理程序


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))

}

有没有办法将更多参数传递给处理函数,以便我可以做更多的逻辑?我的意思是向homePage名为message. 像这样的东西...


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))

}


猛跑小猪
浏览 146回答 1
1回答

DIEA

执行此操作的常用技术是从接受您想要的任何其他参数的函数返回处理程序,如下所示:package mainimport (    "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)}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go