Assertions de type pour les conversions de valeur d'interface{} en Int
La conversion d'une valeur d'interface{} en int peut provoquer des erreurs si elle n'est pas effectuée correctement. Une assertion de type est nécessaire pour cette conversion.
Explication de l'erreur
Le message d'erreur suggère que vous ne pouvez pas convertir la valeur interface{} directement en int car il doit y avoir une assertion de type.
Examen de code
Dans votre code :
val, ok := m["area_id"] if !ok { utility.CreateErrorResponse(w, "Error: Area ID is missing from submitted data.") return } fmt.Fprintf(w, "Type = %v", val) // <--- Type = float64 iAreaId := int(val) // <--- Error on this line.
Le problème réside dans cette ligne :
iAreaId := int(val)
Solution
Au lieu de convertir directement la valeur, vous devez utilisez une assertion de type. Il vérifie si la valeur peut être convertie en int et renvoie une erreur sinon. Il existe deux façons de procéder :
// Panicking version iAreaId := val.(int) // Non-panicking version iAreaId, ok := val.(int) if !ok { // Handle the error case here }
En effectuant cette modification, vous pouvez réussir à convertir la valeur interface{} en int et continuer l'exécution de votre code.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!