Golang 使用 sort 对切片排序需要注意的一个点_golang slice vs slicestable-程序员宅基地

技术标签: golang  

最近用 sort.Slice 方法对 slice 做排序功能的时候遇到了一个小坑

先看一段代码

package main

import (
	"fmt"
	"sort"
)

func main() {
	people := []struct {
		Name string
		Age  int
	}{
		{"Alice", 25},
		{"Elizabeth", 75},
		{"Alice", 75},
		{"Bob", 75},
		{"Alice", 75},
		{"Bob", 25},
		{"Colin", 25},
		{"Elizabeth", 25},
	}
	sort.Slice(people, func(i, j int) bool { return people[i].Name < people[j].Name })
	fmt.Println("By name:", people)

	sort.Slice(people, func(i, j int) bool { return people[i].Age < people[j].Age })
	fmt.Println("By age:", people)
}

输出

By name: [{Alice 25} {Alice 75} {Alice 75} {Bob 75} {Bob 25} {Colin 25} {Elizabeth 75} {Elizabeth 25}]
By age: [{Alice 25} {Elizabeth 25} {Bob 25} {Colin 25} {Alice 75} {Bob 75} {Elizabeth 75} {Alice 75}]

有没有注意到一个点,按照 Age 排序的地方,相等的元素老的切片中的顺序变了,一般情况下,这种

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42900065/article/details/97758432

智能推荐

TP-Link Archer MR200 VS Huawei E5186_e5186s-61a-程序员宅基地

文章浏览阅读528次。Since more and more network providers worldwide had deployed LTE wireless networks, when the end-users want to buy a 4G WiFi router with SIM card slot, they usually consider the top brand Huawei and T..._e5186s-61a

RecyclerView 多布局实现、动态设置布局管理器、StaggeredGridLayoutManager占满一行_动态设置staggeredgridlayoutmanager的数量-程序员宅基地

文章浏览阅读3.7k次。RecyclerView实现多种item布局动态改变每一行的列数(动态控制布局管理器):重写adpater中的onAttachedToRecyclerView()方法:动态改变布局管理器调整item行数:@Override //动态设置布局管理器行数public void onAttachedToRecyclerView(@NonNull RecyclerView recyclerView) { RecyclerView.LayoutManager manager = recyclerVi_动态设置staggeredgridlayoutmanager的数量

python里怎么复制粘贴代码,python如何复制粘贴代码_python复制粘贴-程序员宅基地

文章浏览阅读454次,点赞5次,收藏4次。大家好,本文将围绕复制的python代码怎样运行展开说明,python里怎么复制粘贴代码是一个很多人都想弄明白的事情,想搞清楚python如何复制粘贴代码需要先了解以下几个事情。_python复制粘贴

用BERT做命名实体识别任务-程序员宅基地

文章浏览阅读1.3k次。命名实体识别NER任务是NLP的一个常见任务,它是Named Entity Recognization的简称。简单地说,就是识别一个句子中的各种 名称实体。诸如:人名,地名,机构 等。例如对于下面这句话:小明对小红说:"你听说过安利吗?"它的NER抽取结果如下:[{'entity':'person','word':'小明','start':0,'end':2},{'e..._bert命名实体识别

node.js+Vue计算机毕设项目勤工助学管理系统(程序+LW+部署)_基于vue node勤工助学管理系统-程序员宅基地

文章浏览阅读150次。该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流项目运行环境配置:项目技术:Express框架 + Node.js+ Vue 等等组成,B/S模式 +Vscode管理+前后端分离等等。环境需要1.运行环境:最好是Nodejs最新版,我们在这个版本上开发的。其他版本理论上也可以。2.开发环境:Vscode或HbuilderX都可以。推荐HbuilderX;3.mysql环境:建议是用5.7版本均可。_基于vue node勤工助学管理系统

【深度学习项目】基于FER-2013数据集的人脸表情识别代码实现-程序员宅基地

文章浏览阅读369次,点赞6次,收藏6次。本人的深度学习课程大作业。基于FER-2013数据集的人脸表情识别代码实现。3万多字的文字说明,从零开始训练自己的模型。包含FER-2013数据集下载资源、完整可运行代码文件、训练好的模型文件。

随便推点

【IDEA】java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/ObjectMapper的解决方法-程序员宅基地

文章浏览阅读1.8k次。【IDEA】java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/ObjectMapper的解决方法 转在pom.xml导入坐标后仍报错 <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</art_java.lang.noclassdeffounderror: com/fasterxml/jackson/databind/objectmapper

Geometry Instancing-程序员宅基地

文章浏览阅读91次。Geometry Instancing(几何体实例化),是一种用于大批量重复物件渲染的GPU技术,以降低客户端和显卡端数据传输量,所谓的“一次提交,多次渲染”。在OpenGL 3.x下的Instancing技术已经是作为核心,本文也大致地记录一下自己最近使用时的一些思维片段罢。——ZwqXin.com[乱弹纪录I:Geometry Shader][乱弹纪录II:Alpha T..._cocos geometry添加报错

java自动生成实体类插件_利用json2POJO with Lombok 插件自动生成java类的操作-程序员宅基地

文章浏览阅读1.3k次。前言很多时候,我们定义接口或者调用别人的接口时,手里只有一份接口文档,文档中提供一段示例json格式的报文,我们需要根据json中的字段,挨个去定义java POJO 的字段属性。属实费劲,且有时候万一手抖,个别字段填错了,就导致前后端联调不能一次性成功。如果能有办法将json直接生成java POJO,岂不是能省去很多时间。1.安装idea 插件打开preferences → Plugins →..._pojo2json

Java 向主函数main中传入参数_给主函数main的args数组传入5个参数(设置方式见下图),将args数组元素转换为整型(-程序员宅基地

文章浏览阅读5.7k次,点赞3次,收藏16次。向main主函数中传入参数String[ ] args的含义:第一步第二步第三步描述:args[0]=5,args[1]=2,args[2]=5;String[ ] args的含义:String[ ] args 是一个数组类型的参数,向主函数中传入参数,相当于给args这个数组传入数组元素第一步选中类名然后点击run as>>>>run configuratio..._给主函数main的args数组传入5个参数(设置方式见下图),将args数组元素转换为整型(

Pytorch中DataLoader和Dataset的基本用法_pytorch dataset dataloader用法-程序员宅基地

文章浏览阅读1.1w次,点赞22次,收藏71次。文章目录DataLoader支持的两种数据集Iterator格式的DataLoaderPython的Iterator格式数据简介Pytorch使用DataLoader使用自定义的IterableDataset实战:自定义图片加载DataLoaderMap格式的DataLoaderDataLoader支持的两种数据集Map格式:即key,value形式,例如 {0: ‘张三’, 1: ‘李四’}Iterator格式:例如数组,迭代器等Iterator格式的DataLoaderPython中,只要_pytorch dataset dataloader用法

You have not concluded your merge (MERGE_HEAD exists) git拉取失败_如何处理visual studio code中 you have not concluded you-程序员宅基地

文章浏览阅读323次。You have not concluded your merge (MERGE_HEAD exists) git拉取失败今天获取git线上仓库代码报了这个错误:zhangzhi@moke:~/code/ktsg-api$ git pullYou have not concluded your merge (MERGE_HEAD exists).Please, commit your chan..._如何处理visual studio code中 you have not concluded your merge