Heim > Backend-Entwicklung > Golang > Wie glätte ich in Go ein 2D-Slice in ein 1D-Slice?

Wie glätte ich in Go ein 2D-Slice in ein 1D-Slice?

DDD
Freigeben: 2024-12-03 21:34:16
Original
705 Leute haben es durchsucht

How to Flatten a 2D Slice into a 1D Slice in Go?

Einen 2D-Slice in einen 1D-Slice in Go verflachen

In Go gibt es derzeit keine native Funktion, die das Verflachen eines ermöglicht 2D-Schnitt in einen 1D-Schnitt in einem einzigen Vorgang. Es gibt jedoch mehrere einfache und explizite Möglichkeiten, dies zu erreichen.

Ein Ansatz besteht darin, eine Schleife zu verwenden, um jedes Element des 2D-Slices zu durchlaufen und es an das 1D-Slice anzuhängen:

var newArr []int32
for _, a := range arr {
  newArr = append(newArr, a...)
}
Nach dem Login kopieren

Diese Methode ist klar und prägnant, sodass sie leicht zu verstehen und zu implementieren ist.

Eine weitere Option besteht darin, die integrierte Funktion append() zu nutzen, um mehrere zu verketten Slices in ein einzelnes Slice:

newArr := append([]int32{}, arr...)
Nach dem Login kopieren

Dieser Ansatz hängt das gesamte 2D-Slice direkt an das 1D-Slice an und bietet so eine etwas prägnantere Lösung.

Schließlich, wenn das 2D-Slice Slices von enthält Bei gleicher Länge ist es möglich, Slicing und die Funktion copy() zu verwenden, um das 1D-Slice zu erstellen:

length := len(arr[0])
newArr := make([]int32, len(arr) * length)
for i, a := range arr {
  copy(newArr[i * length:], a)
}
Nach dem Login kopieren

Diese Methode ist komplexer, kann aber in bestimmten Szenarien effizienter sein.

Während Go über keine spezielle Funktion zum Reduzieren von Slices verfügt, bieten diese Workarounds einfache und effiziente Lösungen zum Konvertieren von 2D-Slices in 1D-Slices.

Das obige ist der detaillierte Inhalt vonWie glätte ich in Go ein 2D-Slice in ein 1D-Slice?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage