Maison > développement back-end > Golang > le corps du texte

Comment éviter l'erreur « affectation à une entrée dans une carte nulle » lors de la création de tranches de cartes dans Go ?

Patricia Arquette
Libérer: 2024-11-05 16:23:02
original
593 Les gens l'ont consulté

How to Avoid the

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

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

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

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

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

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

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!

source:php.cn
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