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