gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 03:16:36 27 4
gpt4 key购买 nike

我需要通过 html 表单输入值并将它们放入 mysql 数据库中。我目前正在使用 r.Form 获取 map 。这样我就不必为每个有效的方法使用 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

每次更改键名与 map 中的键名相同即

date := 2015-8-13
time := 18:56:11

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

最佳答案

HTML 表单的一个键可以有多个值。这就是为什么请求表单字段被定义为字符串 slice 的映射。 request Form声明为

 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 Get辅助方法将此代码简化为:

   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解析查询字符串和请求正文。

关于mysql - Golang 将映射键设置为其值的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32001109/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com