0

如何将一些额外的变量传递给 Echo mux 处理程序?

我在 main.go 中注册了这样的路由:

 e.GET("/search/:query", handlers.Search(*kindex, app.infoLog))

如您所见,这不是处理程序的正确签名。它应该在没有任何参数的情况下通过。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..
}
4

1 回答 1

2

您可以创建给定类型的匿名函数(闭包)并将其传递给 Echo:

    handler := func(c echo.Context) error {
      return Search(c, *kindex, infoLog)
    }
    e.GET("/search/:query", handler)
于 2020-08-18T11:03:56.187 回答