Maison >développement back-end >Golang >Pourquoi les assertions de type échouent-elles lors de la conversion en alias de type dans Go ?

Pourquoi les assertions de type échouent-elles lors de la conversion en alias de type dans Go ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-22 20:59:13383parcourir

Why Do Type Assertions Fail When Casting to Type Aliases in Go?

Casting vers des alias de type dans Go

Lors de la conversion vers un alias de type dans Go, les assertions de type sont utilisées au lieu de la conversion. Cependant, le comportement des assertions de type diffère de celui des conversions de type.

Conversions de type

Les conversions de type se produisent automatiquement lorsqu'une valeur est stockée dans une variable d'un type différent. . Par exemple, l'attribution d'un int à une variable float64 entraîne une conversion de type.

Assertions de type

Les assertions de type vérifient explicitement si une valeur stockée dans une variable d'interface{} est d'un type spécifique. Ils prennent la forme a.(T), où a est la variable et T est le type cible.

Problème de conversion en alias de type

Comme indiqué dans le fourni l'extrait de terrain de jeu, tenter de convertir une variable interface{} en un alias de type (somethingFuncy) entraîne une panique. En effet, les assertions de type nécessitent que le type dynamique de la valeur soit identique au type cible.

Explication

Dans Go, l'identité de type fait référence à deux types nommés ayant le même nom de type et provenant du même TypeSpec. Étant donné que les alias de type sont effectivement des types nommés, ils doivent avoir exactement le même nom de type et la même déclaration pour être considérés comme identiques.

Conclusion

Casting pour taper des alias dans Go en utilisant le type Les assertions ne sont pas possibles car le type alias doit être identique au type cible. Seul le type exactement du même nom peut être affirmé.

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