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 :
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!