Maison  >  Article  >  développement back-end  >  Comment modifier les valeurs de carte non adressables dans Go ?

Comment modifier les valeurs de carte non adressables dans Go ?

DDD
DDDoriginal
2024-11-24 01:17:14283parcourir

How to Modify Non-Addressable Map Values in Go?

Modification des valeurs de la carte dans Go : résolution de l'erreur « Impossible d'attribuer à une paire »

Dans Go, lorsque vous rencontrez le message d'erreur « peut pas lui attribuer" lorsque vous essayez de modifier une paire dans une carte, il est important de comprendre le concept d'adressabilité.

Les valeurs de la carte dans Go sont non adressables, ce qui signifie qu'on ne peut pas leur attribuer de valeurs directement à l'aide de l'opérateur point (.). Il s'agit d'un choix de conception délibéré pour donner aux implémentations de cartes la flexibilité de déplacer les valeurs en mémoire selon les besoins.

Pour modifier une valeur de carte qui n'est pas adressable, comme une paire, vous avez deux options :

  1. Utiliser un pointeur comme valeur de carte : En définissant la valeur de carte comme un pointeur vers la paire, vous pouvez modifier la valeur en déréférençant le pointeur à l'aide de l'opérateur d'indirection (*).
dict := make(map[string]*pair)
dict["xxoo"] = &pair{5.0, 2.0}
dict["xxoo"].b = 5.0
  1. Copier ou réaffecter la valeur : Au lieu de modifier directement la valeur de la carte, vous pouvez créer une copie, modifiez-le, puis réaffectez-le à la carte. Vous pouvez également remplacer entièrement la valeur par une nouvelle.
// Copy and modify
dict := make(map[string]pair)
dict["xxoo"] = pair{5.0, 2.0}
p := dict["xxoo"]
p.b = 5.0
dict["xxoo"] = p

// Replace the value
dict["xxoo"] = pair{5.0, 5.0}

En comprenant l'adressabilité et en utilisant ces techniques, vous pouvez modifier efficacement les valeurs de carte qui ne sont pas directement adressables.

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!

Déclaration:
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