新闻中心
Golang如何使用sort对数据排序_Golang sort排序操作实践
先按年龄升序再按姓名升序排序:使用sort.Slice定义多级比较逻辑,通过匿名函数实现自定义规则,如年龄相同时比较姓名字符串。

在Go语言中,sort 包提供了对切片和自定义数据结构进行排序的高效方法。掌握它的使用方式,能帮助你在处理列表数据时更加得心应手。本文将通过实际例子讲解如何用 sort 对常见数据类型以及结构体进行排序。
对基本类型切片排序
对于整数、字符串等基本类型的切片,sort 提供了封装好的函数,使用起来非常简单。
例如:-
整数排序:使用
sort.Ints() -
浮点数排序:使用
sort.Float64s() -
字符串排序:使用
sort.Strings()
示例代码:
nums := []int{5, 2, 6, 3, 1, 4}
sort.Ints(nums)
fmt.Println(nums) // 输出: [1 2 3 4 5 6]
strs := []string{"banana", "apple", "cherry"}
sort.Strings(strs)
fmt.Println(strs) // 输出: [apple banana cherry]
对结构体切片排序
当需要对结构体切片排序时,可以实现 sort.Interface 接口,或者使用 sort.Slice() 函数更方便地指定比较逻辑。
结构体切片需实现 Len()、Less() 和 Swap() 方法。
type Person struct {
Name string
Age int
}
type ByAge []Person
func (a ByAge) Len() int { return len(a) }
func (a ByAge) Less(i, j int) bool { return a[i].Age < a[j].Age }
func (a ByAge) Swap(i, j int) { a[i], a[j] = a[j], a[i] }
// 使用
people := []Person{
{&qu
ot;Alice", 30},
{"Bob", 25},
{"Charlie", 35},
}
sort.Sort(ByAge(people))
fmt.Println(people) // 按年龄升序
方法二:使用 sort.Slice(推荐)
无需定义新类型,直接传入比较函数即可。
Motiff妙多
Motiff妙多是一款AI驱动的界面设计工具,定位为“AI时代设计工具”
334
查看详情
sort.Slice(people, func(i, j int) bool {
return people[i].Age < people[j].Age
})
这种方式更简洁,适合临时排序需求。也可以按姓名排序:
sort.Slice(people, func(i, j int) bool {
return people[i].Name < people[j].Name
})
逆序排序
如果要降序排列,只需反转比较条件。
sort.Slice(people, func(i, j int) bool {
return people[i].Age > people[j].Age // 年龄从大到小
})
或对字符串降序:
sort.Slice(strs, func(i, j int) bool {
return strs[i] > strs[j]
})
自定义复杂排序规则
支持多级排序。例如先按年龄升序,年龄相同时按姓名升序。
sort.Slice(people, func(i, j int) bool {
if people[i].Age == people[j].Age {
return people[i].Name < people[j].Name
}
return people[i].Age < people[j].Age
})
基本上就这些。Go 的 sort 包设计简洁,配合 sort.Slice 能快速完成大多数排序任务,不需要重复造轮子。关键在于理解比较函数的返回值控制顺序,写起来直观又高效。不复杂但容易忽略细节,比如索引边界和稳定排序特性,实际使用时注意验证结果。基本上就这些。
以上就是Golang如何使用sort对数据排序_Golang sort排序操作实践的详细内容,更多请关注其它相关文章!
# golang
# go
# 降序
# 按年
# 如何使用
# 自定义
# 数据结构
# 升序
# 排列
# 数据排序
# apple
# app
# go语言
# 巫溪低成本seo推广
# 杭州营销推广服务
# 可靠的网站建设优化
# 喀什律师网站建设
# 深圳物业seo费用排名
# 建瓯seo营销
# 百度知道营销推广付费
# 盛泽网站优化报价
# 台州seo优化多少费用
# 宝安做网站推广哪家好点
# 相关文章
# 只需
# 你在
# 不需要
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
Pyrogram与g4f集成:异步编程实践与常见错误解决
PHP高效扁平化嵌套数组:使用array_merge与数组解包操作符
Win10如何开启蓝牙功能_Windows10找不到蓝牙开关解决方法
J*a里如何使用N*igableMap进行导航操作_可导航Map操作技巧解析
如何使用Node.js csv 包按条件移除含空字段的CSV记录
Composer中的^和~符号代表什么_精通Composer版本号语义化约束
探索高级语言到原生C/C++的转译:挑战与内存管理策略
圆通快递查询实时追踪 圆通物流包裹状态快速查看
c++如何实现一个简单的软件渲染器_c++从零开始的3D图形学
抓大鹅解压小游戏 抓大鹅摸鱼解压入口
MAC怎么安装Homebrew包管理器_MAC为开发者和高级用户安装命令行工具
2026年CSGO开箱网站推荐 CSGO开箱平台精选
J*aScript对象创建方式_J*aScript设计模式应用
海棠账号登录入口_登录海棠账户同步阅读记录
PyTorch模型训练准确率不提升:诊断与修复常见指标计算错误
谷歌浏览器最新官方入口链接 谷歌浏览器网页版官网导航
AI抖音网页版免费视频入口 AI抖音网页端最新视频实时观看
Golang如何实现容器化日志收集与分析_Golang容器日志收集分析方法
html两个JS只运行一个怎么办_让双JS在html中都运行方法【技巧】
支付宝解绑银行卡步骤_支付宝如何解除绑定银行卡
Archive of Our Own官网直达 AO3最新可用地址一览
jQuery Mask 插件中实现电话号码固定前导零的教程
谷歌google账号怎么注册账号 谷歌账号注册官方流程
163邮箱网页版入口导航平台 163邮箱网页版登录入口官网导航
b站怎么删除评论_b站评论管理与删除操作
解决macOS上安装pyhdf时‘hdf.h’文件缺失的编译错误
C++如何使用AddressSanitizer(ASan)_C++调试工具中检测内存访问错误的利器
Promise错误处理:在catch后终止链式then执行的策略
QQ网页版官方账号入口 QQ网页版网页版登录指南
生成rdflib自定义SPARQL函数:参数匹配与实践指南
c++如何使用折叠表达式(Fold Expressions)_c++17可变参数模板新技巧
Spring Boot嵌入式服务器与J*a EE:功能支持深度解析
蛙漫2日版入口 WAMAN2(日版)无删减漫画官网链接
纯CSS与HTML网格布局的HTML精简策略:SVG与JS方案解析
word邮件合并后日期格式不对怎么改_Word邮件合并日期格式修改方法
win11怎么查看应用耗电情况 Win11电池设置查看应用能耗排行榜【优化】
J*a递归快速排序中静态变量的状态管理与陷阱
微信商城在哪里打开【步骤】
必由学官网快捷入口 必由学网页版在线学习平台
如何创建独立于主系统的J*a运行环境_隔离式环境搭建策略
Mac怎么查看崩溃日志_Mac控制台错误报告分析
正确连接J*aScript到HTML实现可点击图片与自定义事件处理
必由学官网首页入口 必由学教师网页版登录指南
使用Python高效删除Word宏并转换DOCM为DOCX格式
从J*aScript对象中精确提取指定属性的教程
4399免费游戏网址入口 4399小游戏免费入口点开即玩
Basecamp怎样用留言钉固定重点_Basecamp用留言钉固定重点【重点标记】
ACG动漫视频网入口 ACG动漫*免费正版观看地址
蛙漫限时开放最深处链接_蛙漫全站漫画会员同款秒开地址
QQ邮箱网页版登录入口 QQ邮箱官方在线使用平台


2025-11-27
浏览次数:次
返回列表
ot;Alice", 30},
{"Bob", 25},
{"Charlie", 35},
}
sort.Sort(ByAge(people))
fmt.Println(people) // 按年龄升序