Maison > Article > développement back-end > Comment résoudre l'erreur « Affectation à l'entrée dans une carte nulle » lors de l'initialisation de la tranche dans Go ?
Erreur d'affectation à une entrée dans une carte nulle lors de l'initialisation de la tranche
Cette erreur d'exécution se produit lors de l'affectation à une entrée de carte nulle dans une tranche. Dans le code fourni, l'erreur provient d'une tentative de création d'une tranche de cartes.
Pour remédier à ce problème, l'approche doit être modifiée comme suit :
<code class="go">type Investor struct { Id string Name string } var invs []Investor for _, row := range rows { var inv_ids []string var inv_names []string // Create arrays of data from MySQL GROUP_CONCAT function inv_ids = strings.Split(row.Str(10), ",") inv_names = strings.Split(row.Str(11), ",") // Build slice of investors for i := 0; i < len(inv_ids); i++ { invs = append(invs, Investor{inv_ids[i], inv_names[i]}) } }</code>
Ici, nous définissons une structure Investor personnalisée pour représenter chaque entrée de carte. Nous initialisons ensuite invs en tant que tranche de structures Investor et la remplissons dans la boucle. Cette approche évite l'utilisation de cartes nulles et garantit une affectation correcte des valeurs.
Une option alternative présentée dans la réponse fournie implique l'utilisation de littéraux composites pour initialiser les cartes directement dans la tranche. Ceci peut être réalisé comme suit :
<code class="go">var invs []map[string]string for _, row := range rows { var inv_ids []string var inv_names []string // Create arrays of data from MySQL GROUP_CONCAT function inv_ids = strings.Split(row.Str(10), ",") inv_names = strings.Split(row.Str(11), ",") // Build slice of maps for i := 0; i < len(inv_ids); i++ { invs = append(invs, map[string]string{"Id": inv_ids[i], "Investor": inv_names[i]}) } }</code>
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!