Lorsque vous essayez d'utiliser strconv sur une variable transmise via URL (variable GET nommée fois), GoLang échoue lors de la compilation en indiquant ce qui suit:
strconv.Atoi () à valeurs multiples dans un contexte à valeur unique
Cependant, quand je réfléchis. TypeOf j'obtiens une chaîne comme type, ce qui, à ma connaissance, est le bon type d'argument.
J'essaie de résoudre ce problème depuis plusieurs heures. Je suis nouveau et je suis devenu assez frustré par ce problème. J'ai finalement décidé de demander de l'aide. Tout commentaire serait apprécié.
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
}
L'erreur vous indique que les deux valeurs de retour de strconv.Atoi
(int
et error
) sont utilisés dans un contexte de valeur unique (l'affectation à time
). Changez le code en:
time, err := strconv.Atoi(times)
if err != nil {
// handle error
}
Bien qu'il ait été répondu et que la question soit assez ancienne, j'ai pensé qu'il serait bien de compléter la réponse acceptée.
Lorsqu'une fonction renvoie plusieurs valeurs comme dans la question, si l'une des valeurs n'est pas nécessaire, elles peuvent être supprimées en utilisant identifiant vide_
comme ci-dessous.
num, _ := strconv.Atoi(numAsString)
Cela stockerait le nombre converti dans num
mais rejetterait l'erreur en l'attribuant à l'identifiant vide.
Mais notez qu'une fois qu'une valeur est affectée à _
il ne peut plus être référencé. c'est à dire.
num, _ := strconv.Atoi(numAsString)
fmt.Println(_) // won't compile. cannot reference _