Ne peut pas attribuer à la structure du champ dans une carte

J'ai la structure de données comme ceci:

type Snapshot struct {
  Key   string
  Users []Users
}

snapshots := make(map[string] Snapshot, 1)

//then did the initialization
snapshots["test"] = Snapshot {
  Key: "testVal",
  Users: make([]Users, 0),
}

Users est une autre structure.

Puis quand j'ai essayé d'ajouter des nouveaux Users valeurs dans la tranche comme ceci:

snapshots["test"].Users = append(snapshots["test"].Users, user)

J'ai continué à obtenir cette erreur:

cannot assign to struct field snapshots["test"].Users in map

Aussi essayé la solution de contournement https://github.com/golang/go/issues/3117 donc comme ceci:

tmp := snapshots["test"].Users
tmp = append(tmp, user)
snapshots["test"].Users = tmp

Mais pas de chance, encore exactement la même erreur.

Et j'ai aussi essayé de déclarer la carte avec le pointeur, donc: snapshots := make(map[string] *Snapshot, 1), toujours pas de chance.

  • Reportez-vous à stackoverflow.com/questions/32751537/...
  • merci pour ur de réponse, j'ai enfin compris la raison pour laquelle, après j'ai déjà utiliser le pointeur elle ne fonctionne toujours pas, c'est parce que je n'ai snapshots := make(map[string] Snapshot, 1), alors je pense que le len(snapshots) sera de 1, plus tard, j'ai initialisé la carte avec une boucle for, qui a utilisé la valeur len(snapshots),.... donc, que signifie le processus d'initialisation de ne jamais se faire.... puis après j'ai utilisé un pointeur, j'obtiens cette erreur: panic: runtime error: invalid memory address or nil pointer dereference [signal SIGSEGV: segmentation violation code=0x1 addr=0x78 pc=0x427bb9d]
InformationsquelleAutor lnshi | 2017-03-05