Maison > développement back-end > Golang > Comment empêcher qu'un type soit utilisé comme clé de carte dans Go ?

Comment empêcher qu'un type soit utilisé comme clé de carte dans Go ?

Susan Sarandon
Libérer: 2024-10-28 02:28:31
original
316 Les gens l'ont consulté

How to Prevent a Type from Being Used as a Map Key in Go?

Empêcher l'utilisation d'un type comme clé de mappage

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>
Copier après la connexion

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>
Copier après la connexion

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!

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