Maison >développement back-end >Golang >Comment rechercher efficacement des éléments dans Go Slices par clé ?

Comment rechercher efficacement des éléments dans Go Slices par clé ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-15 02:29:08371parcourir

How to Efficiently Search for Elements in Go Slices by Key?

Recherche d'éléments dans les tranches Go

Lorsque vous travaillez avec des tranches de structures dans Go, la localisation d'éléments spécifiques par clé peut être une tâche courante. Explorons comment y parvenir en utilisant différentes approches :

Fonction générique : slices.IndexFunc()

Depuis Go 1.21, le package slices dans la bibliothèque standard introduit un fonction de recherche générique appelée slices.IndexFunc() :

func IndexFunc[S ~[]E, E any](s S, f func(E) bool) int

Cette fonction renvoie le premier index i où f(s[i]) est vrai, ou -1 si aucun élément correspondant n'est trouvé. Pour rechercher une clé dans une tranche de structures à l'aide de slices.IndexFunc() :

idx := slices.IndexFunc(myconfig, func(c Config) bool { return c.Key == "key1" })

For Loop

Lors de l'utilisation de versions antérieures de Go ou pour une base approche, vous pouvez utiliser une boucle for :

for _, v := range myconfig {
    if v.Key == "key1" {
        // Found
    }
}

Optimisé pour Boucle

Pour de meilleures performances, il est recommandé d'utiliser une boucle for opérant sur l'index i au lieu de copier les éléments :

for i := range myconfig {
    if myconfig[i].Key == "key1" {
        // Found
    }
}

Carte pour des recherches efficaces

Si la recherche d'éléments par clé est une opération fréquente, pensez à construire une carte à partir de la tranche. Cela permet des recherches rapides basées sur des clés :

// Build a config map:
confMap := map[string]string{}
for _, v := range myconfig {
    confMap[v.Key] = v.Value
}

// To find a value by key:
if v, ok := confMap["key1"]; ok {
    // Found
}

Considérations :

  • Si plusieurs configurations avec la même clé peuvent exister, envisagez de quitter la boucle ou à l'aide d'une carte.
  • L'optimisation des recherches est particulièrement bénéfique pour les grandes tranches comportant des types d'éléments complexes.

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