Mit einer einfachen for
Schleife:
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 range
Schleife 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 key
sind. Wenn nicht, sollten Sie break
die 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 map
erstellen, 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,