Avec un simple for
boucle:
for _, v := range myconfig {
if v.Key == "key1" {
// Found!
}
}
Noter que, depuis le type d'élément de la tranche est un struct
(et non pas un pointeur), cela peut être inefficace si la structure est de type "big" que la boucle de copie visité chaque élément dans la variable de boucle.
Il serait plus rapide d'utiliser un range
boucle juste sur l'index, cela évite de copier les éléments:
for i := range myconfig {
if myconfig[i].Key == "key1" {
// Found!
}
}
Notes:
Cela dépend de votre cas si plusieurs configs peuvent exister avec le même key
, mais si non, vous devriez break
hors de la boucle si une correspondance est trouvée (afin d'éviter de chercher pour les autres).
for i := range myconfig {
if myconfig[i].Key == "key1" {
// Found!
break
}
}
Aussi, si c'est fréquent, vous devez envisager la construction d'un map
de ce que vous pouvez tout simplement l'index, par exemple
// Build a config map:
confMap := map[string]string{}
for _, v := range myconfig {
confMap[v.Key] = v.Value
}
// And then to find values by key:
if v, ok := confMap["key1"]; ok {
// Found
}