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!