如何在golang中从查询中获取数组键的值

时间:2017-03-18 04:03:29

标签: arrays url go

我有这个查询

site.com/?status[0]=1&status[1]=2&status[1]=3&name=John

我想获得状态键的所有值,如

  

1,2,3

我试过这样的事情

for _, status:= range r.URL.Query()["status"] {
    fmt.Println(status)
}

但只有在查询没有数组键时才有效:site.com/?status=1&status=2&status=3&name=John

1 个答案:

答案 0 :(得分:6)

一种方法是循环遍历可能的值并在出现时附加到切片:

r.ParseForm()  // parses request body and query and stores result in r.Form
var a []string
for i := 0; ; i++ {
    key := fmt.Sprintf("status[%d]", i)
    values := r.Form[key] // form values are a []string
    if len(values) == 0 {
        // no more values
        break
    }
    a = append(a, values[i])
    i++
}

如果您可以控制查询字符串,请使用以下格式:

 site.com/?status=1&status=2&status=3&name=John

并使用以下方式获取状态值:

 r.ParseForm()
 a := r.Form["status"]  // a is []string{"1", "2", "3"}