Affectation à une entrée dans une erreur de carte nulle : création de tranches de cartes
Lorsque vous essayez de créer des tranches de cartes, il est important de comprendre comment la mémoire dans Go est alloué et accessible. L'erreur d'exécution "affectation à une entrée dans une carte nulle" se produit lorsque vous essayez d'attribuer une valeur à une entrée de carte nulle.
Dans le code fourni, le but est de créer une tranche de cartes avec chaque carte contenant deux indices. : "Id" et "Investisseur". L'approche initiale impliquait de créer un tableau de cartes :
invs := make([]map[string]string, length)
Cependant, cela a entraîné une erreur de panique car la tranche invs contient initialement des cartes nulles. Pour résoudre ce problème, la déclaration correcte est :
a := make([]map[string]int, 100)
qui initialise chaque élément de la tranche avec une carte vide.
Ensuite, le code parcourt les cartes et les remplit avec des données :
for i := 0; i < length; i++ { invs[i] = make(map[string]string) invs[i]["Id"] = inv_ids[i] invs[i]["Investor"] = inv_names[i] }
Cette approche crée des cartes pour chaque entrée de la tranche. Cependant, une manière plus concise de remplir les cartes consiste à utiliser des littéraux composites :
invs[i] = map[string]string{"Id": inv_ids[i], "Investor": inv_names[i]}
qui crée une carte déjà remplie.
Pour une approche plus idiomatique, envisagez d'utiliser des structures pour représenter les investisseurs :
type Investor struct { Id int Name string }
puis en créant une tranche d'investisseurs :
a := make([]Investor, 100) for i := 0; i < 100; i++ { a[i] = Investor{Id: i, Name: "John" + strconv.Itoa(i)} }
Cette approche fournit un moyen plus propre et plus sûr de représenter les données des investisseurs.
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!