golang平均区分算法
今天碰到一个需求,把全部的未分配的id,平均分配到不同的用户下面,比如商城后台有10笔订单需要审核,审核员有3名,怎么样把这几笔订单平均的分配下来
贴一下我实现的代码、
package main
import "fmt"
func main() {
var all [][]int //用来存储全部的数据
a:=[]int{1,2,3} //这个是审核员的id,
for range a { //先添加几个空的数组容器
all=append(all, []int{})
}
b:=[]int{10,11,12,13,14,15,16,17,18,19,20} //订单的id列表
i:=0 //用来临时计数,看是否已经存储过一遍,如果已经分了一个轮回,那么重复添加
for _, v := range b {
fmt.Println(v)
all[i]=append(all[i], v)
i++ //计数判断是否归零
if i>=len(a) {
i=0
}
}
fmt.Printf("%+v",all)
}得到的结果如下:
10 11 12 13 14 15 16 17 18 19 20 [[10 13 16 19] [11 14 17 20] [12 15 18]]
如果用gorm再把数据更新一下
//加事务保证统一性
for i := 0; i < len(a); i++ {
up := map[string]interface{}{
"verfiy_id": a[i],
"verify_status": 1,
}
if err = dao.MDB.Model(&model.Order{}).Where("id IN ?", all[i]).Updates(up).Error; err != nil {
db.Rollback()
return
}
}完整的流程就这样了,主要的目的是减少数据的查询与更新次数
本文来自投稿,不代表本人立场,如若转载,请注明出处;如有问题您可以发邮件到:itlun@qq.com