Go 如何将地图中的值与一组已知值进行比较

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'中的值包含

我有一些代码可以从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'中的值包含在变量'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")