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 :
Sujet à la panique :
iAreaId := val.(int)
Si val ne peut pas être converti en int, cette approche sera panique.
Sans panique :
iAreaId, ok := val.(int)
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!