Heim > Backend-Entwicklung > Golang > Was sind die prägnantesten und leistungsstärksten Möglichkeiten, Slices in Go tief zu kopieren?

Was sind die prägnantesten und leistungsstärksten Möglichkeiten, Slices in Go tief zu kopieren?

Patricia Arquette
Freigeben: 2024-12-23 19:26:15
Original
1015 Leute haben es durchsucht

What are the Most Concise and Performant Ways to Deep Copy Slices in Go?

Präzision und Leistung beim Deep Copying von Slices

Bei der Arbeit mit Slices in Go kann es sein, dass Sie ein Slice tief kopieren müssen, um sicherzustellen, dass Änderungen an der Kopie durchgeführt werden hat keinen Einfluss auf das Original-Slice. In diesem Artikel werden zwei prägnante und leistungsstarke Methoden untersucht, um dies zu erreichen.

Eine etablierte Technik ist die Verwendung der Append-Funktion:

copy := append([]T{}, orig...)
Nach dem Login kopieren

Eine alternative Methode ist jedoch die Verwendung der integrierten Kopie Funktion ist aufgetaucht:

cpy := make([]T, len(orig))
copy(cpy, orig)
Nach dem Login kopieren

In der Dokumentation zur Kopierfunktion heißt es, dass sie Elemente von einem Quell-Slice in ein Ziel-Slice kopiert und diese bei Bedarf überlappt. Es gibt die Anzahl der kopierten Elemente zurück, die durch die Länge beider Slices begrenzt ist.

Hinweis:Beide Methoden kopieren nur die Werte im Slice. Wenn das Slice Zeiger oder Strukturen mit Zeigerfeldern enthält, zeigen diese Zeiger weiterhin auf die gleichen Werte wie im ursprünglichen Slice.

Benchmark-Ergebnisse:

Zur Beurteilung Zur Leistung dieser Methoden wurde ein Benchmark durchgeführt:

BenchmarkCopy     100000         24724 ns/op
BenchmarkAppend   100000         24967 ns/op
Nach dem Login kopieren

Wie Sie sehen können, sind beide Ansätze sehr ähnlich Leistung.

Assembly-Analyse:

Die Untersuchung der für jede Methode generierten Assembly zeigt, dass beide entweder runtime.growslice oder runtime.makeslice aufrufen, die wahrscheinlich für die Ausführung einer beliebigen Methode verantwortlich sind Für das neue Slice ist eine Nullfüllung erforderlich.

Das obige ist der detaillierte Inhalt vonWas sind die prägnantesten und leistungsstärksten Möglichkeiten, Slices in Go tief zu kopieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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