我有一些代码从URL中提取URL参数并将其放入地图中。我可以成功打印出我想要检查的地图项的值。
values := r.URL.Query()
a := values["a"]
fmt.Println(a)
我注意到打印值时,打印时会用“[]”打印它们。
我想评估每个a,b,c的值,并检查它是否包含在以逗号分隔的字符串中。
allowedA = "value1,value2,value3"
即。类似于:
if(contains(allowedA,a)
含义“如果'a'中的值包含在变量'allowedA'中,则返回true。
有什么建议吗?
答案 0 :(得分:1)
我注意到打印出来的值是" []"围绕着他们。
那是因为url.Values
是map[string][]string
,而不是map[string]string
。使用url.Values.Get
直接访问参数。
我想评估每个a,b,c的值,并检查它是否包含在以逗号分隔的字符串中。
我建议拆分字符串并将结果用作地图键,以便您可以将地图用作一组。即。
allowedAMap := map[string]struct{}{}
allowedAStrs := strings.Split(allowedA, ",")
for _, s := range allowedAStrs {
allowedAMap[s] = struct{}{}
}
//...
if _, ok := allowedAMap[a]; !ok {
fmt.Println("wrong a")
return
}
fmt.Println("correct a")