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 ?

Comment résoudre l'erreur « Affectation à l'entrée dans une carte nulle » lors de l'initialisation de la tranche dans Go ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-05 11:37:02533parcourir

How to Resolve the

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn