Heim > Backend-Entwicklung > Golang > Wie verteile ich ein Go-Slice gleichmäßig in mehrere Stücke?

Wie verteile ich ein Go-Slice gleichmäßig in mehrere Stücke?

Patricia Arquette
Freigeben: 2024-12-20 06:41:08
Original
125 Leute haben es durchsucht

How to Evenly Distribute a Go Slice into Multiple Chunks?

Slice Chunking in Go

Problem:

Wie verteilt man eine bestimmte Scheibe gleichmäßig darauf? mehrere Scheiben hinein Los?

Lösung:

Um eine Scheibe gleichmäßig zu teilen, befolgen Sie diese Schritte:

  1. Bestimmen Sie die Stückgröße, indem Sie die Länge von teilen die ursprüngliche Scheibe um die gewünschte Anzahl an Stücken.
  2. Initialisieren Sie eine Scheibe von Scheiben, um die Stücke zu speichern Slices.
  3. Iterieren Sie über das ursprüngliche Slice und fügen Sie Chunks der definierten Größe zum Slice-Slice hinzu.
  4. Passen Sie den Endindex des letzten Chunks an, um sicherzustellen, dass alle Elemente enthalten sind.

Hier ist eine überarbeitete Version des in der Frage bereitgestellten Codes:

var divided [][]string

chunkSize := (len(logs) + runtime.NumCPU - 1) / runtime.NumCPU

for i := 0; i < len(logs); i += chunkSize {
    end := i + chunkSize

    if end > len(logs) {
        end = len(logs)
    }

    divided = append(divided, logs[i:end])
}
Nach dem Login kopieren

Dieser aktualisierte Code erstellt eine gleichmäßige Verteilung Chunk-Slices durch Anhängen von Teilmengen des Original-Slices an die Slices-Slice. Die Chunk-Größe wird berechnet, um sicherzustellen, dass alle Elemente möglichst gleichmäßig verteilt sind.

Das obige ist der detaillierte Inhalt vonWie verteile ich ein Go-Slice gleichmäßig in mehrere Stücke?. 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