Maison  >  Article  >  développement back-end  >  Comment éviter l'erreur « affectation à une entrée dans une carte nulle » lors de la création de tranches de cartes dans Go ?

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
Patricia Arquetteoriginal
2024-11-05 16:23:02594parcourir

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)

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)

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]
}

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]}

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
}

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)}
}

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!

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