Maison >développement back-end >Golang >Comment puis-je implémenter une comparaison de clés personnalisée dans Go Maps ?
Comparaison de clés personnalisées dans Go Maps
Dans Go, les cartes nécessitent des clés comparables, mais parfois une opération d'égalité personnalisée est souhaitée. Ce scénario se produit lorsqu'une structure de données personnalisée, telle qu'une structure définie par l'utilisateur, est utilisée comme clé de carte.
Pour contourner cette limitation, une solution de contournement consiste à dériver un attribut distinct de la structure qui sert de carte. clé. Cet attribut dérivé doit avoir la sémantique d'égalité souhaitée et doit être intrinsèquement utilisable comme clé.
Considérons l'exemple suivant :
type Key struct { a *int } func (k *Key) HashKey() int { return *k.a }
Dans cet exemple, la méthode HashKey dérive une valeur entière qui représente l’identité de la Clé. La carte peut ensuite être construite à l'aide de cet attribut dérivé :
k1, k2 := Key{intPtr(1)}, Key{intPtr(2)} m := map[int]string{} m[k1.HashKey()] = "one" m[k2.HashKey()] = "two" fmt.Println(m) // Outputs: map[1:one 2:two]
Notez que la comparaison clé repose uniquement sur la méthode HashKey(), permettant une sémantique d'égalité personnalisée.
Immuabilité Considérations
Cependant, l'immuabilité est cruciale lors de l'utilisation de cette approche. Si les champs de la structure d'origine sont modifiés, l'instance ne peut plus être utilisée comme clé de mappage car son identité a changé.
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!