Suchen nach Elementen in Go-Slices
Bei der Arbeit mit Slices von Strukturen in Go kann das Auffinden bestimmter Elemente anhand des Schlüssels eine häufige Aufgabe sein. Lassen Sie uns untersuchen, wie Sie dies mit verschiedenen Ansätzen erreichen können:
Generische Funktion: slices.IndexFunc()
Ab Go 1.21 führt das Slices-Paket in der Standardbibliothek eine ein generische Suchfunktion namens „slices.IndexFunc()“:
func IndexFunc[S ~[]E, E any](s S, f func(E) bool) int
Diese Funktion gibt den ersten Index i wo zurück f(s[i]) ist wahr oder -1, wenn kein passendes Element gefunden wird. So suchen Sie mit „slices.IndexFunc()“ nach einem Schlüssel in einem Struktursegment:
idx := slices.IndexFunc(myconfig, func(c Config) bool { return c.Key == "key1" })
For-Schleife
Bei Verwendung früherer Versionen von Go oder für eine Basisversion Ansatz können Sie eine for-Schleife verwenden:
for _, v := range myconfig { if v.Key == "key1" { // Found } }
Optimiert für Schleife
Für eine verbesserte Leistung wird empfohlen, eine for-Schleife zu verwenden, die auf dem Index i arbeitet, anstatt die Elemente zu kopieren:
for i := range myconfig { if myconfig[i].Key == "key1" { // Found } }
Karte für effiziente Suchvorgänge
Wenn die Suche nach Elementen anhand des Schlüssels ein häufiger Vorgang ist, sollten Sie die Erstellung einer Karte aus dem Slice in Betracht ziehen. Dies ermöglicht eine schnelle schlüsselbasierte Suche:
// 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 }
Überlegungen:
Das obige ist der detaillierte Inhalt vonWie kann man Elemente in Go-Slices effizient nach Schlüssel suchen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!