blob: 2a69eb475d2068d6230f8481b69a3df46102b206 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
package slices
func Chunk[T any](slice []T, chunkSize int) [][]T {
if chunkSize < 1 {
return [][]T{slice}
}
chunksCount := len(slice) / chunkSize
if len(slice)%chunkSize > 0 {
chunksCount++
}
chunks := make([][]T, chunksCount)
for i := range chunks {
if len(slice) < chunkSize {
chunkSize = len(slice)
}
chunks[i] = slice[0:chunkSize]
slice = slice[chunkSize:]
}
return chunks
}
|