如何将一些额外的变量传递给 Echo mux 处理程序?
我在 main.go 中注册了这样的路线:
e.GET("/search/:query", handlers.Search(*kindex, app.infoLog))
Run Code Online (Sandbox Code Playgroud)
正如您可能看到的,这不是处理程序的正确签名。它应该在没有任何争论的情况下通过。IEhandlers.Search
如何从我的搜索处理程序访问 kindex 和 infoLog?
func Search(c echo.Context, kindex string, infoLog *log.Logger) error {
# Should I access a global variable from here?
infoLog.Printf("Kendra Index: %v\n", kindex)
# cut..
}
Run Code Online (Sandbox Code Playgroud)
您可以创建给定类型的匿名函数(闭包)并将其传递给 Echo:
handler := func(c echo.Context) error {
return Search(c, *kindex, infoLog)
}
e.GET("/search/:query", handler)
Run Code Online (Sandbox Code Playgroud)