Maison >développement back-end >Golang >Comment puis-je vérifier efficacement l'adhésion à la liste dans Go ?

Comment puis-je vérifier efficacement l'adhésion à la liste dans Go ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-27 16:30:14182parcourir

How Can I Efficiently Check List Membership in Go?

Adhésion à la liste de contrôle dans Go : une alternative au mot-clé Python "in"

En Python, le mot-clé "in" fournit un outil pratique moyen de vérifier si une valeur existe dans une liste. Go, cependant, n'offre pas d'équivalent direct.

Rapprocher le mot-clé "in" avec une carte

Une approche dans Go consiste à exploiter une carte[string] bool comme représentation d’un ensemble. En stockant des valeurs valides sous forme de clés et en attribuant de vraies valeurs, vous pouvez tester l'appartenance en vérifiant si une clé est présente dans la carte :

valid := map[string]bool{"red": true, "green": true, "yellow": true, "blue": true}

if valid[x] {
    fmt.Println("found")
} else {
    fmt.Println("not found")
}

Utiliser des valeurs nulles

Profitez du fait que lorsqu'une clé n'est pas trouvée dans une carte, la valeur zéro pour bool (false) est renvoyée. Cela vous permet d'omettre l'affectation explicite de vraies valeurs, simplifiant ainsi l'initialisation :

valid := map[string]bool{"red", "green", "yellow", "blue"}

if valid[x] {
    fmt.Println("found")
} else {
    fmt.Println("not found")
}

Optimisations

Pour les scénarios avec un grand nombre de valeurs valides, pensez à utiliser une boucle for range pour initialiser la carte. Cela fournit une solution compacte :

for _, v := range []string{"red", "green", "yellow", "blue"} {
    valid[v] = true
}

De plus, vous pouvez optimiser le code en définissant une variable const pour éviter les valeurs booléennes répétitives :

const t = true
valid := map[string]bool{"red": t, "green": t, "yellow": t, "blue": t}

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