In Go, it's common to need to split a slice into smaller chunks for various processing tasks. Below, we provide a concise way to achieve this using a custom function.
package main
import (
"fmt"
)
// ChunkSlice splits a slice into smaller chunks of the specified size.
func ChunkSlice(s []int, chunkSize int) [][]int {
var chunks [][]int
for chunkSize < len(s) {
s, chunks = s[chunkSize:], append(chunks, s[0:chunkSize:chunkSize])
}
return append(chunks, s)
}
func main() {
// Example usage
nums := []int{1, 2, 3, 4, 5, 6, 7, 8, 9}
chunked := ChunkSlice(nums, 3)
fmt.Println(chunked) // Output: [[1 2 3] [4 5 6] [7 8 9]]
}
How do I avoid rehashing overhead with std::set in multithreaded code?
How do I find elements with custom comparators with std::set for embedded targets?
How do I erase elements while iterating with std::set for embedded targets?
How do I provide stable iteration order with std::unordered_map for large datasets?
How do I reserve capacity ahead of time with std::unordered_map for large datasets?
How do I erase elements while iterating with std::unordered_map in multithreaded code?
How do I provide stable iteration order with std::map for embedded targets?
How do I provide stable iteration order with std::map in multithreaded code?
How do I avoid rehashing overhead with std::map in performance-sensitive code?
How do I merge two containers efficiently with std::map for embedded targets?