Maison > développement back-end > Golang > 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
Libérer: 2024-11-05 11:37:02
original
613 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal