drwpbrv668670 2017-03-18 04:03
浏览 464
已采纳

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

I have this query

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

I want to get all the values of status key like

1, 2, 3

I tried something like this

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

but it only works if the query is without array key: site.com/?status=1&status=2&status=3&name=John

  • 写回答

1条回答 默认 最新

  • dongliang2058 2017-03-18 04:48
    关注

    One approach is to loop over the possible values and append to a slice as you go:

    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++
    }
    

    If you have control over the query string, then use this format:

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

    and get status values using:

     r.ParseForm()
     a := r.Form["status"]  // a is []string{"1", "2", "3"}
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥50 微信聊天记录备份到电脑提示成功了,但还是没同步到电脑微信
  • ¥15 python怎么在已有视频文件后添加新帧
  • ¥20 虚幻UE引擎如何让多个同一个蓝图的NPC执行一样的动画,
  • ¥15 fluent里模拟降膜反应的UDF编写
  • ¥15 MYSQL 多表拼接link
  • ¥15 关于某款2.13寸墨水屏的问题
  • ¥15 obsidian的中文层级自动编号
  • ¥15 同一个网口一个电脑连接有网,另一个电脑连接没网
  • ¥15 神经网络模型一直不能上GPU
  • ¥20 wpf datagrid单元闪烁效果失灵