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 _
Другие вопросы по тегам