如何进行golang 数组随机排序的实现
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,如何进行golang 数组随机排序的实现,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。前言目前接到一个推荐数据的需求,需要将数据库中
千家信息网最后更新 2025年11月07日如何进行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安全错误
数据库的锁怎样保障安全
网络安全的特点包括
白莲广场网络安全手册
安全狗服务器规则
东营商城软件开发
枣庄安卓软件开发外包公司
内蒙古有网络技术有限公司
小米服务器出现故障什么原因
盛煌科技与互联网
越南文软件开发
fm2022开多少数据库
win10信息服务器打不开
宁夏手机软件开发制作
七星关区计算机网络技术职业学校
丹阳市苏菲亚网络技术有限公司
u盘扫描后怎么恢复数据库
网络根服务器是谁家研究出来的
合肥市天气预报软件开发
wind数据库股票价格
佛山服务器维修哪家好
中国互联网科技发达吗
浙江fil服务器
日语专业学软件开发
云服务器ddos防护平台
云服务器内存异常监控
游戏软件开发助理做什么的
深圳软件开发公司排行中软国际
海信配置服务器信息是什么
联想sr588服务器硬盘序列号
如何开始软件开发计划
软件开发中的管理制度