golang中使用 sort.Interface 实现复杂多级排序
举两个例子说明 sort.Interface实现多级排序。例子 1学生成绩排序先按成绩降序成绩相同按姓名升序package main import ( fmt sort ) type Student struct { Name string Score int } type ByScoreAndName []Student func (s ByScoreAndName) Len() int { return len(s) } func (s ByScoreAndName) Swap(i, j int) { s[i], s[j] s[j], s[i] } func (s ByScoreAndName) Less(i, j int) bool { // 第一级按分数降序分数高的排前面 if s[i].Score ! s[j].Score { return s[i].Score s[j].Score } // 第二级分数相同时按姓名升序 return s[i].Name s[j].Name } func main() { students : []Student{ {Alice, 85}, {Bob, 90}, {Charlie, 85}, {David, 90}, } sort.Sort(ByScoreAndName(students)) for _, s : range students { fmt.Printf(%s: %d\n, s.Name, s.Score) } // 输出: // Bob: 90 // David: 90 // Alice: 85 // Charlie: 85 }例子 2员工排序先按部门升序部门相同按工资降序工资相同按工号升序package main import ( fmt sort ) type Employee struct { ID int Department string Salary float64 } type ByDeptSalaryID []Employee func (e ByDeptSalaryID) Len() int { return len(e) } func (e ByDeptSalaryID) Swap(i, j int) { e[i], e[j] e[j], e[i] } func (e ByDeptSalaryID) Less(i, j int) bool { // 第一级按部门升序 if e[i].Department ! e[j].Department { return e[i].Department e[j].Department } // 第二级部门相同时按工资降序 if e[i].Salary ! e[j].Salary { return e[i].Salary e[j].Salary } // 第三级工资相同时按工号升序 return e[i].ID e[j].ID } func main() { employees : []Employee{ {103, Engineering, 75000}, {101, Engineering, 80000}, {102, Engineering, 80000}, {201, Sales, 70000}, {202, Sales, 75000}, } sort.Sort(ByDeptSalaryID(employees)) for _, emp : range employees { fmt.Printf(ID: %d, Dept: %s, Salary: %.2f\n, emp.ID, emp.Department, emp.Salary) } // 输出: // ID: 101, Dept: Engineering, Salary: 80000.00 // ID: 102, Dept: Engineering, Salary: 80000.00 // ID: 103, Dept: Engineering, Salary: 75000.00 // ID: 202, Dept: Sales, Salary: 75000.00 // ID: 201, Dept: Sales, Salary: 70000.00 }

相关新闻

指针,C语言的灵魂与噩梦:从入门到“放弃”的终极指南 [特殊字符]

指针,C语言的灵魂与噩梦:从入门到“放弃”的终极指南 [特殊字符]

2026/7/8 18:20:08 阅读更多 →
SAGE-Net:融合语义信息的自动驾驶注意力预测框架

SAGE-Net:融合语义信息的自动驾驶注意力预测框架

2026/7/3 21:04:49 阅读更多 →
Flutter for OpenHarmony:用 StatefulWidget 实现基础用户交互

Flutter for OpenHarmony:用 StatefulWidget 实现基础用户交互

2026/7/6 10:21:43 阅读更多 →

最新新闻

AI建站实战:WordPress外贸站从0到1与一人公司技术栈

AI建站实战:WordPress外贸站从0到1与一人公司技术栈

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 “一个人就是一家公司”,这句话在AI时代正从一句口号变成一种可落地的商业模式。过去,一个独立开发者或创业者…

2026/7/9 18:23:51 阅读更多 →
TC78H651AFNG与PIC18F27K40的直流电机驱动方案解析

TC78H651AFNG与PIC18F27K40的直流电机驱动方案解析

1. 项目背景与核心器件解析在工业自动化和消费电子领域,直流有刷电机驱动器一直是关键的执行部件。TC78H651AFNG作为东芝新一代H桥驱动器IC,与Microchip的PIC18F27K40微控制器组合,构成了一个高性能、高集成度的电机控制解决方案。这套组合特…

2026/7/9 18:21:50 阅读更多 →
GESP2026年6月认证C++八级( 第一部分选择题(1-7))精讲

GESP2026年6月认证C++八级( 第一部分选择题(1-7))精讲

第1题 组合计数答案:B(455)题目从 7 本不同算法书 和 5 本不同数学书 中选 4 本,要求:两类书都至少选 1 本。问一共有多少种选法?第一步:为什么不能直接计算?1、有的同学第一反应&am…

2026/7/9 18:19:50 阅读更多 →
UniversalAdbDriver终极指南:一站式解决Windows ADB驱动安装难题

UniversalAdbDriver终极指南:一站式解决Windows ADB驱动安装难题

UniversalAdbDriver终极指南:一站式解决Windows ADB驱动安装难题 【免费下载链接】UniversalAdbDriver One size fits all Windows Drivers for Android Debug Bridge. 项目地址: https://gitcode.com/gh_mirrors/un/UniversalAdbDriver 还在为Windows电脑无…

2026/7/9 18:19:50 阅读更多 →
Halcon 12点标定实战:3步修正9点标定旋转中心偏移(附完整代码)

Halcon 12点标定实战:3步修正9点标定旋转中心偏移(附完整代码)

Halcon 12点标定实战:3步修正9点标定旋转中心偏移(附完整代码)在机器视觉定位引导系统中,标定精度直接决定了整个系统的定位准确性。9点标定作为基础方法虽然简单易用,但在实际应用中常因旋转中心偏差导致机械坐标转换…

2026/7/9 18:19:50 阅读更多 →
5款机器视觉SCI期刊审稿周期对比:IET CV 1个月 vs IJCV 4.5个月

5款机器视觉SCI期刊审稿周期对比:IET CV 1个月 vs IJCV 4.5个月

5款机器视觉SCI期刊审稿周期对比:从1个月到4.5个月的高效投稿策略在机器视觉领域,选择合适的SCI期刊投稿不仅关乎研究成果的传播效果,更直接影响学术生涯的关键时间节点——无论是毕业答辩、职称评定还是项目结题。面对从1个月到4.5个月不等的…

2026/7/9 18:19:50 阅读更多 →

日新闻

3大音乐平台逐字歌词完整解决方案:ESLyric-LyricsSource完全指南

3大音乐平台逐字歌词完整解决方案:ESLyric-LyricsSource完全指南

3大音乐平台逐字歌词完整解决方案:ESLyric-LyricsSource完全指南 【免费下载链接】ESLyric-LyricsSource Advanced lyrics source for ESLyric in foobar2000 项目地址: https://gitcode.com/gh_mirrors/es/ESLyric-LyricsSource 还在为Foobar2000找不到高质…

2026/7/9 0:01:04 阅读更多 →
ElegantBook封面定制揭秘:3个步骤打造专业级学术书籍

ElegantBook封面定制揭秘:3个步骤打造专业级学术书籍

ElegantBook封面定制揭秘:3个步骤打造专业级学术书籍 【免费下载链接】ElegantBook Elegant LaTeX Template for Books 项目地址: https://gitcode.com/gh_mirrors/el/ElegantBook 你是否曾经为学术书籍的封面设计而烦恼?想要一个既专业又美观的封…

2026/7/9 0:03:06 阅读更多 →
如何高效使用pyodbc:企业级数据库连接终极指南

如何高效使用pyodbc:企业级数据库连接终极指南

如何高效使用pyodbc:企业级数据库连接终极指南 【免费下载链接】pyodbc Python ODBC bridge 项目地址: https://gitcode.com/gh_mirrors/py/pyodbc 在当今数据驱动的商业环境中,企业级数据库连接已成为现代应用开发的核心需求。pyodbc作为一款强大…

2026/7/9 0:07:11 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/8 16:14:06 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/9 13:46:46 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/8 16:59:55 阅读更多 →

月新闻