我正在尝试为我的API路由创建一个结构。我有两个结构:查询和路由。然后,我会根据我的路线类型创建一条路线。
创建路由后,我将创建一个新的路由器,并在路由范围内进行迭代,并将方法,路径,处理程序和查询传递给它们。
尝试传递查询时,我不断收到错误消息
不能使用route.Queries([]查询类型)作为参数中的类型字符串...
type Queries struct {
item string
useritem string
key string
userkey string
}
type Route struct {
Method string
Path string
HandleFunc http.HandlerFunc
Queries []Queries
}
var Routes = []Route{
{
Method: "GET",
Path: "/items",
HandleFunc: controllers.Getitems,
Queries: []Queries{{"item", "{useritem}", "key", "{userkey}",},
},
},
}
func CreateRouter() *mux.Router {
router := mux.NewRouter()
for _, route := range Routes {
router.
Methods(route.Method).
Path(route.Path).
Handler(route.HandleFunc).
Queries(route.Queries) //This is where the error occurs
}
return router
}
最佳答案
首先将route.Queries
转换为queries []string
。
然后,您需要解压缩数组作为参数。请改用router.Queries(queries...)
。
有关此方法的实现,请参见https://github.com/gorilla/mux/blob/master/mux.go#L341。
关于go - 如何将嵌套结构传递给参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58788664/