Maison >développement back-end >Golang >Comment puis-je implémenter l'égalité des clés personnalisée pour Go Maps ?
Égalité de clé personnalisée pour les cartes Go
Lors de la création d'une carte dans Go, vous pouvez utiliser n'importe quel type comme clé tant qu'il implémente l'interface comparable. Par défaut, Go utilise l'opérateur d'égalité intégré (==) pour comparer les clés. Cependant, il peut y avoir des cas où vous souhaitez définir vos propres critères d'égalité.
Exemple
Considérez le type de clé personnalisée suivant :
type Key struct { a *int }
Pour comparer deux instances de Key, vous souhaitez utiliser votre propre Equal function :
func Equal(x Key, y Key) bool { return *x.a == *y.a }
Solution de contournement
Malheureusement, Go ne vous permet pas de spécifier des fonctions de hachage ou d'égalité personnalisées pour les clés de carte. Au lieu de cela, vous pouvez utiliser la solution de contournement suivante :
func (k *Key) HashKey() int { return *(*k).a }
Exemple d'utilisation
Utilisation du Dans l'exemple ci-dessus, la carte serait :
k1, k2 := Key{intPtr(1)}, Key{intPtr(2)} m := map[int]string{} m[k1.HashKey()] = "one" m[k2.HashKey()] = "two"
Précautions
Rappelez-vous que cette approche repose sur l'immuabilité de l'attribut clé dérivé. Si des champs de la structure Key changent, l'identité de la clé change et cela ne fonctionnera pas comme prévu.
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!