Erreur : impossible d'attribuer au champ Struct de la carte
Lorsque vous travaillez avec des cartes qui stockent des structures, les développeurs rencontrent souvent l'erreur "Impossible d'attribuer à la structure champ sur une carte." Ce problème survient lors de la tentative de modification d'un sous-champ dans une structure stockée dans la carte.
L'exemple fourni illustre ce scénario. Un instantané de carte est initialisé avec une paire clé-valeur où la valeur est un instantané de structure contenant une tranche de structures d'utilisateurs. Cependant, lorsque vous essayez d'ajouter à la tranche Utilisateurs, l'erreur mentionnée est générée.
Pour résoudre ce problème, il est essentiel de comprendre que la structure d'origine stockée dans la carte n'est pas adressable. Au lieu de cela, c'est une copie. Par conséquent, aucune modification ne sera reflétée dans la structure d'origine de la carte.
L'approche correcte consiste à récupérer la structure de la carte, à apporter les modifications nécessaires, puis à la réaffecter à la carte. Voici un code révisé qui implémente cette approche :
func main() { snapshots := make(map[string]Snapshot, 1) snapshots["test"] = Snapshot{ Key: "testVal", Users: make([]Users, 0), } user := Users{...} // Initialize a new Users struct // Retrieve the Snapshot value from the map snapshot := snapshots["test"] // Append to the Users slice snapshot.Users = append(snapshot.Users, user) // Reassign the modified Snapshot value to the map snapshots["test"] = snapshot }
En suivant cette approche, la structure Snapshot d'origine dans la carte sera mise à jour avec succès avec la tranche Utilisateurs ajoutée.
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!