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

Pourquoi ne puis-je pas attribuer à un champ Struct dans une Go Map ?

Patricia Arquette
Libérer: 2024-11-13 17:00:02
original
552 Les gens l'ont consulté

Why Can't I Assign to a Struct Field in a Go Map?

Attribution aux champs Struct dans la carte

L'erreur "Impossible d'attribuer au champ struct dans une carte" se produit lors de la tentative de modification d'un champ de une structure stockée dans une carte. Cette limitation provient de l'immuabilité des clés et valeurs de la carte dans Go.

Dans l'exemple fourni, snapshots := make(map[string] Snapshot, 1) crée une carte avec des clés de type string et des valeurs de type Snapshot, où Snapshot est une structure. Pour modifier la tranche Utilisateurs au sein d'une valeur Snapshot, vous devez suivre la procédure appropriée.

L'approche suivante garantit que la tranche Utilisateurs est modifiée correctement :

func main() {
  snapshots := make(map[string]Snapshot, 1)
  snapshots["test"] = Snapshot{
    Key:   "testVal",
    Users: make([]Users, 0),
  }
  
  // Get a copy of the 'Users' slice
  users := snapshots["test"].Users

  // Append user to the copy
  users = append(users, user)

  // Reassign the map entry
  snapshots["test"].Users = users
}
Copier après la connexion

En obtenant une copie du ' Tranche des utilisateurs, vous pouvez modifier puis réaffecter la copie modifiée à l'entrée de la carte. Cette approche adhère à l'immuabilité de la carte.

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