Maison > Article > développement back-end > Pourquoi est-ce que je reçois une « Erreur d'exécution : affectation à une entrée dans une carte Nil » lors de la création d'une tranche de cartes dans Go ?
Erreur d'exécution : "Affectation à une entrée dans une carte nulle" lors de la création d'une tranche de cartes
Dans le but de générer une tranche de cartes, une erreur d'exécution "affectation à l'entrée dans une carte nulle" se produit. Malgré la compilation réussie du code, cette erreur gêne l'exécution du programme.
Le but est de créer un tableau de cartes, chaque carte contenant deux indices : "Id" et "Investor". Le code tente ceci :
<code class="go">for _, row := range rows { invs := make([]map[string]string, length) for i := 0; i < length; i++ { invs[i] = make(map[string]string) invs[i]["Id"] = inv_ids[i] invs[i]["Investor"] = inv_names[i] } return(msg) }</code>
Initialement, une tentative a été faite pour résoudre le problème avec le code suivant :
<code class="go">invs := make([]make(map[string]string), length)</code>
Cependant, cela n'a pas résolu le problème.
Une solution complète
Pour créer efficacement une tranche de cartes, il faut utiliser une approche différente. Prenons l'exemple suivant :
<code class="go">package main import "fmt" func main() { a := make([]map[string]int, 100) for i := 0; i < 100; i++ { a[i] = map[string]int{"id": i, "investor": i} } fmt.Println(a) }</code>
Au lieu d'utiliser une boucle pour attribuer des valeurs à chaque carte, on peut utiliser un littéral composite :
<code class="go">invs[i] = map[string]string{"Id": inv_ids[i], "Investor": inv_names[i]}</code>
Solution alternative utilisant des structures
Pour une approche plus idiomatique, il est conseillé d'utiliser une structure pour représenter un investisseur :
<code class="go">package main import ( "fmt" " strconv" ) type Investor struct { Id int Name string } func main() { a := make([]Investor, 100) for i := 0; i < 100; i++ { a[i] = Investor{Id: i, Name: "John" + strconv.Itoa(i)} fmt.Printf("%#v\n", a[i]) } }</code>
En employant ces techniques, l'erreur d'exécution peut être éliminée et la tranche souhaitée de des cartes ou un tableau de structures peuvent être obtenues, en fonction des exigences spécifiques du programme.
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!