警告:我不用杜松子酒。尽管如此,请参见下文。 结束可能会奏效。在构建闭包时,请始终考虑您需要的函数类型,并创建一个将返回此类型的函数。在你的情况下,你需要一个杜松子酒处理工。 以下是一个示例,您可以根据版本采取不同的行动: func getTest(version string) func(c *gin.Context) { return func(c *gin.Context) { switch version { case "v1": // do what you need to do to handle old version default: // do something else by default } }} 或者,如果您只是想像在您的小示例中那样打印: func getTest(version string) func(c *gin.Context) { return func(c *gin.Context) { fmt.Println(version) task, err := zr.Push("test_" + version, Test{Task: "exchanges"}) getTestResponse(c, task, err) }} 现在,您可以将其包装到路由器中: v1 := router.Group("/v1"){ v1.GET("/test",