Mit einer einfachen forSchleife:
for _, v := range myconfig {
if v.Key == "key1" {
}
}
Da der Elementtyp des Slice ein struct(kein Zeiger) ist, kann dies ineffizient sein, wenn der Strukturtyp "groß" ist, da die Schleife jedes besuchte Element in die Schleifenvariable kopiert.
Es wäre schneller, eine rangeSchleife nur für den Index zu verwenden. Dadurch wird vermieden, dass die Elemente kopiert werden:
for i := range myconfig {
if myconfig[i].Key == "key1" {
}
}
Anmerkungen:
Es hängt von Ihrem Fall ab, ob mehrere Konfigurationen mit derselben vorhanden keysind. Wenn nicht, sollten Sie breakdie Schleife verlassen, wenn eine Übereinstimmung gefunden wird (um die Suche nach anderen zu vermeiden).
for i := range myconfig {
if myconfig[i].Key == "key1" {
break
}
}
Auch wenn dies eine häufige Operation ist, sollten Sie in Betracht ziehen, daraus eine zu maperstellen, die Sie einfach indizieren können, z
confMap := map[string]string{}
for _, v := range myconfig {
confMap[v.Key] = v.Value
}
if v, ok := confMap["key1"]; ok {
}
map[string]interface{}. Wenn Sie interessiert sind,