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 :
Obtenez une copie temporaire de la structure de la valeur de la carte. Par exemple :
tmp := snapshots["test"].Users
Apportez les modifications à cette copie temporaire.
tmp = append(tmp, user)
Réaffectez la copie temporaire à la structure de la valeur de la carte .
snapshots["test"].Users = tmp
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!