Démêler les ajouts de tableaux dans les cartes dans Go
Dans Go, les cartes sont des outils puissants pour organiser les données. Cependant, cela peut devenir délicat lorsque vous essayez d'ajouter des valeurs aux tableaux au sein de ces cartes. Considérons un scénario hypothétique :
var MyMap map[string]Example type Example struct { Id []int Name []string }
Puzzle dévoilé
L'extrait de code tente d'ajouter des entiers et des chaînes à des tableaux dans une carte appelée MyMap. Cependant, l'implémentation contient une erreur cruciale :
MyMap["key1"] = Offerty.AppendOffer(1, "SomeText")
Ici, Offerty ne peut pas être reconnu comme un objet car il n'est jamais défini. Pour résoudre ce problème, créez une instance de la structure Exemple avant de l'associer à la carte, comme indiqué ci-dessous :
obj := &Example{[]int{}, []string{}} obj.AppendOffer(1, "SomeText")
Référence, pas de copie
De plus, la l'extrait de code crée simplement une copie de la structure Exemple, pas une référence à celle-ci. Pour conserver un pointeur vers la structure dans la carte :
MyMap = make(map[string]*Example) MyMap["key1"] = obj
Solution en vue
Avec ces modifications, le code révisé ajoute avec succès des valeurs aux tableaux dans la carte :
package main import "fmt" type Example struct { Id []int Name []string } func (data *Example) AppendOffer(id int, name string) { data.Id = append(data.Id, id) data.Name = append(data.Name, name) } var MyMap map[string]*Example func main() { obj := &Example{[]int{}, []string{}} obj.AppendOffer(1, "SomeText") MyMap = make(map[string]*Example) MyMap["key1"] = obj fmt.Println(MyMap) }
Cette solution préserve la structure d'exemple d'origine dans la carte, permettant les mises à jour et les modifications de ses tableaux depuis la portée extérieure.
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!