strconv.Atoi() 在给定字符串时抛出错误
strconv.Atoi() throwing error when given a string
当尝试对通过 URL(GET 变量命名时间)传递的变量使用 strconv 时,GoLang 编译失败,说明如下:
multiple-value strconv.Atoi() in a single-value context
但是,当我执行 reflect.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
}
错误告诉您 strconv.Atoi
中的两个 return 值(int
和 error
)用于单值上下文(赋值给 time
).将代码更改为:
time, err := strconv.Atoi(times)
if err != nil {
// Add code here to handle the error!
}
使用 blank identifier 忽略 error
return 值:
time, _ := strconv.Atoi(times)
虽然这个问题已经得到回答而且问题很老了,但我认为补充已接受的答案会很好。
当函数 returns 有多个值时,如果不需要任何值,则可以使用 空白标识符 _
如下所示。
num, _ := strconv.Atoi(numAsString)
这会将转换后的数字存储在 num
中,但通过将其分配给空白标识符来丢弃错误。
但请注意,一旦将值分配给 _
,就无法再次引用它。即
num, _ := strconv.Atoi(numAsString)
fmt.Println(_) // won't compile. cannot reference _
当尝试对通过 URL(GET 变量命名时间)传递的变量使用 strconv 时,GoLang 编译失败,说明如下:
multiple-value strconv.Atoi() in a single-value context
但是,当我执行 reflect.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
}
错误告诉您 strconv.Atoi
中的两个 return 值(int
和 error
)用于单值上下文(赋值给 time
).将代码更改为:
time, err := strconv.Atoi(times)
if err != nil {
// Add code here to handle the error!
}
使用 blank identifier 忽略 error
return 值:
time, _ := strconv.Atoi(times)
虽然这个问题已经得到回答而且问题很老了,但我认为补充已接受的答案会很好。
当函数 returns 有多个值时,如果不需要任何值,则可以使用 空白标识符 _
如下所示。
num, _ := strconv.Atoi(numAsString)
这会将转换后的数字存储在 num
中,但通过将其分配给空白标识符来丢弃错误。
但请注意,一旦将值分配给 _
,就无法再次引用它。即
num, _ := strconv.Atoi(numAsString)
fmt.Println(_) // won't compile. cannot reference _