Rebanada fragmentada en Go

Tengo una porción con ~ 2.1 millones de cadenas de registro, y me gustaría crear una porción de rebanadas con las cadenas distribuidas de la manera más uniforme posible.

Esto es lo que tengo hasta ahora:

// logs is a slice with ~2.1 million strings in it.
var divided = make([][]string, 0)
NumCPU := runtime.NumCPU()
ChunkSize := len(logs) / NumCPU
for i := 0; i < NumCPU; i++ {
    temp := make([]string, 0)
    idx := i * ChunkSize
    end := i * ChunkSize + ChunkSize
    for x := range logs[idx:end] {
        temp = append(temp, logs[x])
    }
    if i == NumCPU {
        for x := range logs[idx:] {
            temp = append(temp, logs[x])
        }
    }
    divided = append(divided, temp)
}

losidx := i * ChunkSize me dará el "inicio fragmentario" actual para ellogs índice yend := i * ChunkSize + ChunkSize me dará el "chun, k end", o el final del rango de ese trozo. No pude encontrar ninguna documentación o ejemplos sobre cómo fragmentar / dividir un segmento o iterar en un rango limitado en Go, así que esto es lo que se me ocurrió. Sin embargo, solo copia el primer fragmento varias veces, por lo que no funciona.

¿Cómo puedo (lo más uniformemente posible) cortar un trozo en Go?

Respuestas a la pregunta(1)

Su respuesta a la pregunta