Mit einem einfachen for
loop:
for _, v := range myconfig {
if v.Key == "key1" {
// Found!
}
}
anzumerken, dass, da Elementtyp der Scheibe ein struct
ist (kein Zeiger), dies ineffizient sein, wenn der Strukturtyp „big“, wie die Schleife wird Kopieren Sie jedes besuchte Element in die Schleifenvariable.
Es würde schneller sein, eine range
Schleife verwenden nur auf dem Index, vermeidet dies die Elemente Kopieren:
for i := range myconfig {
if myconfig[i].Key == "key1" {
// Found!
}
}
Hinweise:
Es auf Ihrem Fall davon ab, ob mehrere Konfigurationen mit existieren das gleiche key
, aber wenn nicht, sollten Sie break
außerhalb der Schleife, wenn eine Übereinstimmung gefunden wird (um die Suche nach anderen zu vermeiden).
for i := range myconfig {
if myconfig[i].Key == "key1" {
// Found!
break
}
}
Auch wenn dies eine häufige Operation ist, sollten Sie eine map
von Gebäude es betrachten, die kann man einfach Index, zum Beispiel
// 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
}
Wie Ihre Config-Struktur wie eine einfache Karte sieht ich darauf hinweisen möchte, dass Sie alle JSON-Daten zu einem 'Karte entschlüsseln kann [string] Schnittstelle {}'. Wenn Sie interessiert sind, gehen Sie [diesen offiziellen Blog-Post] (https://blog.golang.org/json-and-go) – tsabsch