Подтвердить что ты не робот

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
}
4b9b3361

Ответ 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 _