Maison > développement back-end > Golang > Pourquoi l'assertion de type échoue-t-elle lors de la conversion en un alias de type dans Go ?

Pourquoi l'assertion de type échoue-t-elle lors de la conversion en un alias de type dans Go ?

Barbara Streisand
Libérer: 2024-12-22 18:35:11
original
655 Les gens l'ont consulté

Why Does Type Assertion Fail When Casting to a Type Alias in Go?

Casting pour taper des alias dans Go

Problème :

Dans l'exemple d'extrait, l'extrait la première assertion de type réussit en spécifiant explicitement la signature de la fonction. Cependant, la deuxième assertion, qui tente de convertir le type en alias quelque chose deFuncy, panique. Pourquoi est-ce le cas, et existe-t-il un moyen de convertir une signature de fonction plus longue ?

Explication :

Contrairement à l'idée fausse selon laquelle la conversion de type est impliquée ici, Go propose uniquement des assertions de type et des conversions de type. L'accent est mis sur les assertions de type, qui sont utilisées dans l'extrait fourni.

Une distinction clé entre les assertions de type et les conversions réside dans les critères utilisés pour la comparaison. Dans les conversions, comme dans l'exemple avec int et MyInt, les types sous-jacents sont pris en compte. Cependant, avec les assertions de type, seul le type exact est pris en compte.

Pour élaborer, dans l'exemple où a est de type int, l'assertion a.(MyInt) échoue car int n'est pas identique à MyInt, même si les deux partagent le même type sous-jacent.

tl;dr :

Les assertions de type vérifient l'exactitude identité de type, ce qui signifie qu'un alias de type comme SomethingFuncy est distinct de func(int) bool. Ainsi, le deuxième casting échoue.

Bonus :

Le code utilisé pour vérifier l'identité du type dans l'extrait est fourni à titre de référence, présentant la comparaison directe impliquée dans l'assertion. processus.

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