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
Patricia ArquetteOriginal
2024-12-27 17:50:11532Durchsuche

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++
}

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++
}

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!

Stellungnahme:
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