Heim > Backend-Entwicklung > Golang > Wie kann ich Schlüssel aus einer Go-Map effizient ausschneiden?

Wie kann ich Schlüssel aus einer Go-Map effizient ausschneiden?

Patricia Arquette
Freigeben: 2024-12-27 17:50:11
Original
572 Leute haben es durchsucht

How Can I Efficiently Slice Keys from a Go Map?

Schlüssel aus Karten in Go ausschneiden

Frage:

Gibt es einen effizienteren Weg? um einen Schlüsselausschnitt von einer Karte in Go zu erhalten?

Derzeit besteht ein gängiger Ansatz darin Iterieren Sie über die Karte und kopieren Sie die Schlüssel in ein Slice:

i := 0
keys := make([]int, len(mymap))
for k := range mymap {
    keys[i] = k
    i++
}
Nach dem Login kopieren

Antwort:

Die Verwendung der Make-Funktion mit der angegebenen Slice-Kapazität kann die Effizienz verbessern, indem das eliminiert wird Notwendigkeit von Neuzuweisungen:

keys := make([]int, len(mymap))

i := 0
for k := range mymap {
    keys[i] = k
    i++
}
Nach dem Login kopieren

Dieser Ansatz ist etwas prägnanter und eliminiert den Overhead, der mit dem Anhängen an ein Slice verbunden ist. In Tests mit Karten, die eine große Anzahl von Schlüsseln enthalten, hat sich gezeigt, dass es 20 % schneller ist als die Verwendung der Append-Funktion.

Während die Make-Funktion die Kapazität des Slice festlegt, ist es erwähnenswert, dass das Append immer noch einige Kosten verursacht zusätzlicher Overhead, der prüft, ob die Kapazität bei jedem Anhängen erreicht wurde. Die direkte Zuweisung von Array-Mitgliedern kann in diesem Fall zu einer Leistungsverbesserung führen.

Das obige ist der detaillierte Inhalt vonWie kann ich Schlüssel aus einer Go-Map effizient ausschneiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage