Maison  >  Article  >  développement back-end  >  carte de Golang supprimer

carte de Golang supprimer

WBOY
WBOYoriginal
2023-05-19 11:57:37534parcourir

Map en golang est une structure de données très importante et couramment utilisée, qui est similaire à un dictionnaire ou à un tableau associatif dans d'autres langages de programmation. L'utilisation de map peut remplacer d'autres structures de données telles que des tableaux et des tranches dans de nombreux cas, et offre des performances et une lisibilité extrêmement élevées. Cependant, lors de l'utilisation de la carte, vous devrez parfois supprimer certains éléments. Cet article discutera de l'opération de suppression de map dans golang.

Dans Golang, vous pouvez utiliser la fonction intégrée delete pour supprimer les paires clé-valeur dans une carte. L'utilisation spécifique est la suivante :

delete(map, key)

Parmi eux, map représente la variable map à utiliser et key représente le nom de la clé à supprimer. Par exemple, le code suivant supprime la paire clé-valeur « nom » : « Tom » de la carte nommée m :

m := map[string]string{"name": "Tom", "age": "18"}
delete(m, "name")
fmt.Println(m) // 输出: map[age:18]

Il convient de noter que si vous essayez de supprimer une clé inexistante- paire de valeurs, la fonction de suppression n'aura aucun impact et ne signalera pas d'erreur. Par exemple, le code suivant :

m := map[string]string{"name": "Tom", "age": "18"}
delete(m, "address")
fmt.Println(m) // 输出: map[name:Tom age:18]

Dans le code ci-dessus, la clé « adresse » que l'on tente de supprimer n'existe pas dans la carte, il n'y aura donc aucun changement.

Vous pouvez rencontrer des problèmes lors de la suppression des paires clé-valeur dans la carte. Par exemple, le code suivant :

m := map[string]string{"name": "Tom", "age": "18"}
for key, value := range m {
    if key == "name" {
        delete(m, key)
    }
}
fmt.Println(m) // 输出: map[age:18]

Le code ci-dessus tentera d'utiliser une boucle for pour parcourir les éléments de la carte et déterminer si le nom de la clé est "name". Si tel est le cas, utilisez la fonction de suppression pour supprimer la paire clé-valeur. Cependant, lorsque le code est exécuté, une erreur sera signalée :

fatal error: concurrent map iteration and map write

C'est parce que la carte ne peut pas être modifiée lorsque la boucle for parcourt la carte. Par conséquent, essayer de modifier la carte à l’aide d’une fonction telle que delete dans une boucle se passera mal. La solution à ce problème consiste à utiliser une tranche temporaire pour stocker les clés à supprimer, puis à les supprimer une fois la boucle terminée. Par exemple, le code suivant :

m := map[string]string{"name": "Tom", "age": "18"}
var keysToDelete []string
for key, value := range m {
    if key == "name" {
        keysToDelete = append(keysToDelete, key)
    }
}
for _, key := range keysToDelete {
    delete(m, key)
}
fmt.Println(m) // 输出: map[age:18]

Grâce à la méthode ci-dessus, nous pouvons réussir à supprimer des éléments de la carte dans golang, tout en évitant les erreurs causées par les modifications dans la boucle. Cependant, il convient de noter que dans certains cas, il peut être plus approprié d'utiliser d'autres structures de données plutôt que la carte. La suppression d'éléments d'autres types de structures de données peut être plus efficace, plus pratique et adaptable à certains scénarios.

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
Article précédent:requête Golang bootprotoArticle suivant:requête Golang bootproto