When trying to use strconv on a variable passed via URL(GET variable named times), GoLang fails on compilation stating the following:
multiple-value strconv.Atoi() in a single-value context
However, when I do reflect.TypeOf I get string as the type, which to my understanding is the correct type of argument.
I have been trying to fix this issue for several hours. I'm new to go and have become pretty frustrated with this problem. I finally decided to ask for help. Any feedback would be appreciated.
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 }
The error is telling you that the two return values from strconv.Atoi
(int
and error
) are used in a single value context (the assignment to time
). Change the code to:
time, err := strconv.Atoi(times) if err != nil { // Add code here to handle the error! }
Use the blank identifier to ignore the error
return value:
time, _ := strconv.Atoi(times)
Although this has been answered and the question is quite old, I thought it would be nice to complement the accepted answer.
When a function returns multiple values as in the question, if any of the value is not needed then they can be discarded by using the blank identifier _
as in the following.
num, _ := strconv.Atoi(numAsString)
This would store the converted number in num
but discard the error by assigning it to the blank identifier.
But do note that once a value is assigned to _
it cannot be referenced again. i.e.
num, _ := strconv.Atoi(numAsString) fmt.Println(_) // won't compile. cannot reference _
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With