使用未定义的整数键入映射

时间:2013-09-09 00:38:15

标签: go

我正在使用Gorilla mux作为我的处理程序并使用mux.Vars。我正在尝试为使用mux.Vars的处理程序之一编写测试,所以我所做的是

var vars = map[string]string{
    "id": user.ID,
}
context.Set(req, 0, vars)

在mux中,键(一个整数)是未定义的,所以默认情况下为0.我在调用mux.Vars时记录了密钥并打印了0.我应该能够键入这个地图

 map[0:map[id:522d14f5b1b92235d6000002]]

通过执行map [key]但返回nil。但是,如果我硬编码map [0],我会得到正确的值。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我不完全确定我理解这个问题,但看起来你可能会混淆mux.Vars和mux.context。这两个是独立的实体。前者返回从URL路径解析的路由变量。例如,您可以这样做:

r := mux.NewRouter()
r.HandleFunc("/blah/{foo}/", MyHandler)

...

func MyHandler(w http.ResponseWriter, r *http.Request) {
    vars := mux.Vars(r)
    ...
}

后者包含您自己设置的上下文变量。例如:

func MyHandler(w http.ResponseWriter, r *http.Request) {
    context.Set(r, 0, map[string]string{"id": "myid"})
    myMap := context.Get(r, 0)
    ...
}

您可以查看一些使用示例,了解其他人如何使用它们来查看最适合您用例的内容:

mux.Vars:https://sourcegraph.com/github.com/gorilla/mux/symbols/go/github.com/gorilla/mux/Vars mux.context:https://sourcegraph.com/github.com/gorilla/context/symbols/go/github.com/gorilla/context