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
Patricia ArquetteOriginal
2024-12-20 06:41:08127Durchsuche

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])
}

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!

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