Maison >développement back-end >Golang >Comment convertir en toute sécurité une valeur d'interface {} en un entier dans Go ?

Comment convertir en toute sécurité une valeur d'interface {} en un entier dans Go ?

DDD
DDDoriginal
2024-12-11 12:16:18866parcourir

How to Safely Convert an interface{} Value to an int in Go?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn