场景: MSQL批量插入的时候往往会与切片结合一起,但是当切片的数量比较大时,可能会引发MYSQL批量插入语句数据过多造成语法报错,所以可以把切片按照指定大小分割成指定大小的小数组作为元素,外面再用一层切片,也就是 从 单一切片变成二维切片。
具体代码:
func splitSliToDoubleSli(singleSli []int, elementSize int) (doubleSli [][]int) {
doubleSli = make([][]int, 0)
if len(singleSli) <= elementSize {
return append(doubleSli, singleSli)
}
//计算总共需要多少页
elementPage := int(math.Ceil(float64(len(singleSli)) / float64(elementSize)))
for i := 1; i <= elementPage; i++ {
if i < elementPage {
doubleSli = append(doubleSli, singleSli[elementSize*(i-1):elementSize*(i-1)+elementSize])
} else {
doubleSli = append(doubleSli, singleSli[elementSize*(i-1):])
}
}
return doubleSli
}