Maison > développement back-end > Golang > le corps du texte

Comment modifier les champs de structure dans les valeurs de carte dans Go ?

DDD
Libérer: 2024-11-13 04:51:02
original
421 Les gens l'ont consulté

How to Modify Struct Fields within Map Values in Go?

Attribution de champs de structure dans les valeurs de carte

Lorsque vous traitez des cartes dans Go, vous pouvez rencontrer des problèmes lors de l'affectation de champs de structure dans les valeurs de carte. . Cela se produit lorsque l'on tente de modifier directement le champ de structure d'une valeur de carte, ce qui entraîne l'erreur : "Impossible d'attribuer au champ de structure dans une carte."

Pour résoudre ce problème et modifier avec succès les champs de structure dans les valeurs de carte, un Le principe important à comprendre est la sémantique d’attribution de valeur dans Go. Lors de l'accès à une clé de mappage, sa valeur associée est une copie de la valeur d'origine. En tant que telles, les modifications directes apportées à cette copie ne seront pas reflétées dans la valeur d'origine de la carte.

Pour modifier efficacement les champs de structure dans les valeurs de la carte, la solution de contournement suivante peut être utilisée :

  1. Obtenez une copie temporaire de la structure de la valeur de la carte. Par exemple :

    tmp := snapshots["test"].Users
    Copier après la connexion
  2. Apportez les modifications à cette copie temporaire.

    tmp = append(tmp, user)
    Copier après la connexion
  3. Réaffectez la copie temporaire à la structure de la valeur de la carte .

    snapshots["test"].Users = tmp
    Copier après la connexion

De plus, il convient de noter que déclarer la carte avec un type de pointeur (par exemple, snapshots := make(map[string]*Snapshot, 1)) ne soulage pas ce problème.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal