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