strconv.Atoi() выдает ошибку при задании строки
При попытке использовать strconv для переменной, переданной через URL(переменная GET с именем times), 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
}
1 ответ
Ошибка говорит вам, что два возвращаемых значения из strconv.Atoi
(int
а также error
) используются в контексте одного значения (присваивание time
). Измените код на:
time, err := strconv.Atoi(times)
if err != nil {
// handle error
}
Хотя на этот вопрос был дан ответ и вопрос довольно старый, я подумал, что было бы неплохо дополнить принятый ответ.
Когда функция возвращает несколько значений, как в вопросе, если какое-либо значение не требуется, их можно отбросить, используя пустой идентификатор. _
как в следующем.
num, _ := strconv.Atoi(numAsString)
Это сохранит преобразованное число в num
но отбросьте ошибку, присвоив ее пустому идентификатору.
Но учтите, что как только значение присваивается _
на него нельзя ссылаться снова. т.е.
num, _ := strconv.Atoi(numAsString)
fmt.Println(_) // won't compile. cannot reference _