如何进行golang 数组随机排序的实现
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,如何进行golang 数组随机排序的实现,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。前言目前接到一个推荐数据的需求,需要将数据库中
千家信息网最后更新 2026年11月01日如何进行golang 数组随机排序的实现前言
具体实现步骤如下
1.引入库
2.组装数据并排序(方案一)
3.组装数据并排序(方案二)
如何进行golang 数组随机排序的实现,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
前言
目前接到一个推荐数据的需求,需要将数据库中获取到的数据进行随机排序后返回给用户。考虑了一下,有两种使用方式,一种是通过数据库 order by rand() ,还有一种就是本文需要使用到的代码处理
具体实现步骤如下
1.引入库
代码如下:
import ( "fmt" "math/rand" "time")
2.组装数据并排序(方案一)
代码如下:
type CategoryEntity struct { GrouponId int64 //团ID MerchandiseId int64 //商品ID CategoryId int64 //分类ID CategoryTitle string //分类名称}func main() { data := make([]CategoryEntity, 10) data[0] = CategoryEntity{GrouponId: 0, MerchandiseId: 1117891, CategoryId: 726, CategoryTitle: "蔬菜"} data[1] = CategoryEntity{GrouponId: 1, MerchandiseId: 1110162, CategoryId: 1505, CategoryTitle: "调料调味"} data[2] = CategoryEntity{GrouponId: 2, MerchandiseId: 1117822, CategoryId: 746, CategoryTitle: "水果"} data[3] = CategoryEntity{GrouponId: 3, MerchandiseId: 1115770, CategoryId: 1408, CategoryTitle: "个人护理"} data[4] = CategoryEntity{GrouponId: 4, MerchandiseId: 1116528, CategoryId: 732, CategoryTitle: "肉"} data[5] = CategoryEntity{GrouponId: 5, MerchandiseId: 1116526, CategoryId: 727, CategoryTitle: "休闲食品"} data[6] = CategoryEntity{GrouponId: 6, MerchandiseId: 1117188, CategoryId: 728, CategoryTitle: "粮油调味"} data[7] = CategoryEntity{GrouponId: 7, MerchandiseId: 1117379, CategoryId: 726, CategoryTitle: "蔬菜"} data[8] = CategoryEntity{GrouponId: 8, MerchandiseId: 1118166, CategoryId: 1005, CategoryTitle: "居家百货"} data[9] = CategoryEntity{GrouponId: 9, MerchandiseId: 1117377, CategoryId: 746, CategoryTitle: "水果"} fmt.Println("随机前:", data) //如果不使用rand.Seed(seed int64),每次运行,得到的随机数会一样 rand.Seed(time.Now().Unix()) //采用rand.Shuffle,将切片随机化处理后返回 rand.Shuffle(len(data), func(i, j int) { data[i], data[j] = data[j], data[i] }) fmt.Println("随机后:", data)}3.组装数据并排序(方案二)
代码如下:
type CategoryEntity struct { GrouponId int64 //团ID MerchandiseId int64 //商品ID CategoryId int64 //分类ID CategoryTitle string //分类名称}func main() { data := make([]CategoryEntity, 10) data[0] = CategoryEntity{GrouponId: 0, MerchandiseId: 1117891, CategoryId: 726, CategoryTitle: "蔬菜"} data[1] = CategoryEntity{GrouponId: 1, MerchandiseId: 1110162, CategoryId: 1505, CategoryTitle: "调料调味"} data[2] = CategoryEntity{GrouponId: 2, MerchandiseId: 1117822, CategoryId: 746, CategoryTitle: "水果"} data[3] = CategoryEntity{GrouponId: 3, MerchandiseId: 1115770, CategoryId: 1408, CategoryTitle: "个人护理"} data[4] = CategoryEntity{GrouponId: 4, MerchandiseId: 1116528, CategoryId: 732, CategoryTitle: "肉"} data[5] = CategoryEntity{GrouponId: 5, MerchandiseId: 1116526, CategoryId: 727, CategoryTitle: "休闲食品"} data[6] = CategoryEntity{GrouponId: 6, MerchandiseId: 1117188, CategoryId: 728, CategoryTitle: "粮油调味"} data[7] = CategoryEntity{GrouponId: 7, MerchandiseId: 1117379, CategoryId: 726, CategoryTitle: "蔬菜"} data[8] = CategoryEntity{GrouponId: 8, MerchandiseId: 1118166, CategoryId: 1005, CategoryTitle: "居家百货"} data[9] = CategoryEntity{GrouponId: 9, MerchandiseId: 1117377, CategoryId: 746, CategoryTitle: "水果"} fmt.Println("随机前:", data) //如果不使用rand.Seed(seed int64),每次运行,得到的随机数会一样 rand.Seed(time.Now().Unix()) length := len(data) for i := 0; i < length; i++ { exchange(data, rand.Intn(length), i) } fmt.Println("随机后:", data)}// 交换数据func exchange(data []CategoryEntity, i, j int) { data[i], data[j] = data[j], data[i]}整体比较简单,但是需要注意的有两点:
1:golang中 rand的使用方式,如果不使用rand.Seed(seed int64),每次运行,得到的随机数会一样
2:方案一种采用rand.Shuffle+匿名函数,将切片随机化处理后返回。
3:方案二使用golang特有的数组交换方式:
func exchange(data []CategoryEntity, i, j int) { data[i], data[j] = data[j], data[i]}关于如何进行golang 数组随机排序的实现问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。
数据
排序
代码
方案
水果
蔬菜
分类
数组
方式
问题
随机数
处理
运行
个人
个人护理
休闲食品
名称
商品
数据库
更多
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技公司排名
A股互联网金融科技公司
互联网科技有限公司图片
互联网科技小贷
互联网科技作文
互联网与新科技
中国互联网科技发展
紫鲸互联网科技
腾讯科技 互联网女皇
互联网女皇 腾讯科技
成都狮子座互联网科技
科技类的互联网平台
华脉科技工业互联网产品
互联网汽车科技小镇
互联网科技博主是什么意思
互联网科技与管理
湖南一路畅行互联网科技
宜昌元轩互联网科技有限公司
成都互联网科技公司工作好不好
厦门江牛科技互联网
云南咖啡
互联网科技园
科技与互联网
南京欣网互联网科技
北京禾田雨橡互联网科技
互联网金融科技公司干啥的
崇明区互联网教育科技诚信经营
内蒙古九一互联网科技
广州富喜互联网络科技
互联网科技大佬云集