Problème : Les tentatives d'utilisation d'un type comme clé de mappage entraînent des erreurs de compilation, malgré le type contenant un membre privé. Comment ce problème peut-il être résolu ?
Réponse :
Bien qu'il ne soit pas intrinsèquement avantageux d'empêcher l'utilisation d'un type comme clé de carte, il existe certaines circonstances qui nécessitent une telle action. Selon la spécification du langage, les clés de carte doivent respecter certaines règles de comparaison. Voici deux méthodes pour empêcher qu'un type soit utilisé comme clé de mappage :
Méthode 1 : Incorporer un champ non comparable
La solution la plus simple consiste à intégrer un champ au sein du type dont le type n’est pas comparable, comme une tranche, une carte ou une fonction. Cela viole les exigences de l'opérateur de comparaison pour les clés de mappage, rendant le type inapproprié. Par exemple :
<code class="go">type MyType struct { S string i int notComparable []int }</code>
Méthode 2 : utiliser un type wrapper
Alternativement, on peut créer un type wrapper qui intègre le type d'origine et ajoute un type non comparable champ. Ce type d'enveloppe peut être utilisé ailleurs tandis que le type d'origine conserve sa comparabilité. Par exemple :
<code class="go">type myType struct { S string i int } type MyType struct { myType notComparable []int }</code>
Remarque :
Il est essentiel de considérer les implications potentielles de l'empêchement de l'utilisation du type comme clé de mappage. Dans le cas de la méthode Embedd Non-Comparable Field, elle introduit un champ non comparable, ce qui peut avoir des effets d'entraînement sur les opérations de comparaison impliquant le type.
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!