Maison >développement back-end >Golang >Pourquoi ne puis-je pas attribuer à un champ Struct dans une Go Map ?

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

Patricia Arquette
Patricia Arquetteoriginal
2024-11-13 17:00:02688parcourir

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 dans 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
}

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!

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