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

Comment convertir en toute sécurité une interface {} en un int dans Go ?

Mary-Kate Olsen
Libérer: 2024-12-15 08:06:17
original
989 Les gens l'ont consulté

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

Conversion d'une interface{} en int dans Go

Votre code Go tente de convertir directement une valeur d'interface{} en int, mais le la conversion échoue en raison de contraintes de type. Le message d'erreur indique qu'une assertion de type est nécessaire pour cette conversion.

Comprenons le problème et sa solution :

Problème :

Dans le code fourni, la variable val est de type interface{}. Cela signifie qu'il peut contenir des valeurs de n'importe quel type. L'affectation iAreaId := int(val) tente de convertir la valeur interface{} en int. Cependant, cette conversion directe n'est pas autorisée dans Go.

Solution :

Pour convertir correctement une valeur d'interface{} en un type spécifique, une assertion de type est requise. Une assertion de type fournit au compilateur une indication explicite que vous souhaitez convertir la valeur en un type spécifique.

Pour affirmer val en tant qu'entier, utilisez l'une des syntaxes suivantes :

  1. Sujet à la panique :

    iAreaId := val.(int)
    Copier après la connexion

    Si val ne peut pas être converti en int, cette approche sera panique.

  2. Sans panique :

    iAreaId, ok := val.(int)
    Copier après la connexion

    Cette approche attribue iAreaId à la valeur convertie et ok à un booléen indiquant si la conversion a été couronnée de succès. Si la conversion échoue, ok sera faux.

Comprendre les règles de conversion :

La conversion directe de l'interface{} vers un type spécifique est non autorisé selon les spécifications du langage Go. Une assertion de type est requise pour remplacer ces règles et convertir explicitement la valeur en type souhaité.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal