Golang 将映射键设置为其值的变量

我需要通过 html 表单输入值并将它们放入 mysql 数据库中。我目前正在使用它r.Form来获取地图。这样我就不必r.Form.Get("date")为每一个都使用,但是当我尝试将值放入数据库时。它编译得很好,但我sql: converting argument #0's type: unsupported type []string, a slice在浏览器中单击提交后得到了。我可以通过这样做来解决这个问题


`date := strings.Join(m["date"], "")`

但是对 30 多个值执行此操作,尤其是因为某些提交的值将使用 html 模板从以前的数据库条目中创建。如果我以后必须更改或添加更多内容,似乎必须有一种更有效的方法,for key, val := range m {}但不幸的是,我只这样做了大约一个星期,我不知道如何保留这些值并更改它们在每次迭代后设置为变量。这样之后


for key, val := range m {

x := m[key]

}

这样它就会推出等效的


keyname := keyvalue

每次将键名更改为与映射中的键名相同,即


date := 2015-8-13

time := 18:56:11

或者如果有更简单的方法可以解决此错误,则为每个错误创建一个变量。


婷婷同学_
浏览 149回答 1
1回答

交互式爱情

HTML 表单的一个键可以有多个值。这就是请求表单字段被定义为字符串切片映射的原因。该请求书表格被声明为 Form url.Values和url.Values被声明为  type Values map[string][]string您可以使用以下方法访问键的第一个值:   var value string   if values := req.Form[key]; len(values) > 0 {      value = values[0]   }该url.Values获取的辅助方法简化了这个代码:   value := req.Form.Get(key)该http.Request FormValue辅助方法,简化了多一点:  value := req.FormValue(key)您可以使用以下方法遍历键和值:  for key, values := range req.Form {     for _, value := range values {         fmt.Println(key, value)     }  }如果要迭代键的第一个值,请使用以下代码: for key, values := range req.Form {    if len(values) > 0 {       value := values[0]       fmt.Println(key, value)    } }在访问 req.Form 之前,调用req.ParseForm解析查询字符串和请求体。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go