Go 如何将地图中的值与一组已知值进行比较
我有一些代码可以从URL中提取URL参数并将其放置到地图中。我可以成功打印出要检查的映射项的值Go 如何将地图中的值与一组已知值进行比较,go,Go,我有一些代码可以从URL中提取URL参数并将其放置到地图中。我可以成功打印出要检查的映射项的值 values := r.URL.Query() a := values["a"] fmt.Println(a) 我注意到当值打印时,它们打印时周围有“[]” 我想对每个a、b、c的值进行赋值,并检查它是否包含在逗号分隔的字符串中 allowedA = "value1,value2,value3" i、 e.类似于: if(contains(allowedA,a) 意思是“如果'a'中的值包含
values := r.URL.Query()
a := values["a"]
fmt.Println(a)
我注意到当值打印时,它们打印时周围有“[]”
我想对每个a、b、c的值进行赋值,并检查它是否包含在逗号分隔的字符串中
allowedA = "value1,value2,value3"
i、 e.类似于:
if(contains(allowedA,a)
意思是“如果'a'中的值包含在变量'allowedA'中,则返回true
有什么建议吗
我注意到当值打印时,它们打印时周围有“[]”
这是因为url.Values
是map[string][]string
,而不是map[string]string
。使用url.Values.Get
直接访问参数
我想对每个a、b、c的值进行赋值,并检查它是否包含在逗号分隔的字符串中
allowedA = "value1,value2,value3"
我建议拆分字符串并将结果用作映射键,这样您就可以将映射作为一个集合使用
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")