问题描述
如何将一些额外的变量传递给Echo Mux处理程序?
我已经在main.go中注册了这样的路线:
e.GET("/search/:query",handlers.Search(*kindex,app.infoLog))
您可能会看到,这不是处理程序的正确签名。它应该已经传递而没有任何参数。即handlers.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..
}
解决方法
您可以创建给定类型的匿名函数(闭包)并将其传递给Echo:
handler := func(c echo.Context) error {
return Search(c,*kindex,infoLog)
}
e.GET("/search/:query",handler)