当尝试对通过URL传递的变量(名为times的GET变量)使用strconv时,GoLang在编译时失败,说明如下:
单值上下文中的多值strconv.Atoi()
然而,当我做反射.TypeOf我得到字符串作为类型,我理解的是正确的参数类型。
我一直在努力解决这个问题几个小时。我很快就会对这个问题感到非常沮丧。我终于决定寻求帮助了。任何反馈都将不胜感激。
func numbers(w http.ResponseWriter, req *http.Request) {
fmt.Println("GET params were:", req.URL.Query());
times := req.URL.Query()["times"][0]
time := strconv.Atoi(times)
reflect.TypeOf(req.URL.Query()["times"][0]) // returns string
}
答案 0 :(得分:38)
错误告诉您strconv.Atoi
(int
和error
)的两个返回值用于单个值上下文(time
的赋值)。将代码更改为:
time, err := strconv.Atoi(times)
if err != nil {
// handle error
}
答案 1 :(得分:2)
尽管已经回答了这个问题,而且这个问题已经很老了,但我认为最好补充已经接受的答案。
当函数如问题中返回多个值时,如果不需要任何值,则可以使用空白标识符 _
将其丢弃,如下所示。< / p>
num, _ := strconv.Atoi(numAsString)
这会将转换后的数字存储在num
中,但通过将其分配给空白标识符来丢弃该错误。
但是请注意,一旦将值分配给_
,就不能再次引用它。即
num, _ := strconv.Atoi(numAsString)
fmt.Println(_) // won't compile. cannot reference _