开发过程中其实经常需要batch化处理,这是一个写代码的pattern吧,记录一下
func doBatch(dataList []int, batchSize int) {
numBatches := len(dataList) / batchSize
if len(dataList)%batchSize != 0 {
numBatches++
}
for i := 0; i < numBatches; i++ {
startIdx := i * batchSize
endIdx := startIdx + batchSize
if endIdx > len(dataList) {
endIdx = len(dataList)
}
batchData := dataList[startIdx:endIdx]
fmt.Printf("batch %d: %v\n", i, batchData)
}
}
func TestBatch(t *testing.T) {
dataList := make([]int, 0)
doBatch(dataList, 10)
for i := 0; i < 95; i++ {
dataList = append(dataList, i)
}
doBatch(dataList, 10)
for i := 95; i < 200; i++ {
dataList = append(dataList, i)
}
doBatch(dataList, 10)
}