go语言的slice()不仅仅可以对int类型的数组进行排序,还可以对struct类型的数组进行排序

排序函数如下

1. Slice() 不稳定排序

2. SliceStable() 稳定排序

3. SliceIsSorted() 判断是否已排序

结构体定义如下,我们完全可以定义更复杂的结构体:

// 结构体定义
type test struct {value intstr   string
}

结果如下图:

完整代码如下:

package mainimport ("fmt""sort"
)// 结构体定义
type test struct {value intstr   string
}func main() {s := make([]test, 5)s[0] = test{value: 2, str: "test2"}s[1] = test{value: 4, str: "test4"}s[2] = test{value: 1, str: "test1"}s[3] = test{value: 5, str: "test5"}s[4] = test{value: 3, str: "test3"}fmt.Println("初始化结果:")fmt.Println(s)// 从小到大排序(不稳定排序)sort.Slice(s, func(i, j int) bool {if s[i].value < s[j].value {return true}return false})fmt.Println("\n从小到大排序结果:")fmt.Println(s)// 从小到大排序(稳定排序)sort.SliceStable(s, func(i, j int) bool {if s[i].value < s[j].value {return true}return false})// 是否从小到大排序bLess := sort.SliceIsSorted(s, func(i, j int) bool {if s[i].value < s[j].value {return true}return false})fmt.Printf("数组s是否从小到大排序,bLess:%v\n", bLess)// 从大到小排序(不稳定排序)sort.Slice(s, func(i, j int) bool {if s[i].value > s[j].value {return true}return false})fmt.Println("\n从大到小排序结果:")fmt.Println(s)// 是否从大到小排序bMore := sort.SliceIsSorted(s, func(i, j int) bool {if s[i].value > s[j].value {return true}return false})fmt.Printf("数组s是否从大到小排序,bMore:%v\n", bMore)
}

golang 结构体 slice 排序相关推荐

  1. Golang结构体排序

    Golang对结构体字段排序的案例 本案例通过 sort 方法,对产品的 price 字段进行排序,仅供参考... package mainimport ("fmt""s ...

  2. go结构体初始化_浅谈golang结构体偷懒初始化

    运行一段程序,警告: service/mysqlconfig.go:63::error: golang.guazi-corp.com/tools/ksql-runner/model.CreatingM ...

  3. golang 结构体简介

    Go 通过类型别名(alias types)和结构体的形式支持用户自定义类型,或者叫定制类型.试图表示一个现实世界中的实体. 结构体由一系列命名的元素组成,这些元素又被称为字段,每个字段都有一个名称和 ...

  4. PAT甲级1141 PAT Ranking of Institutions :[C++题解]结构体、排序、哈希表、结构体构造函数、结构体内写函数、排名

    文章目录 题目分析 题目来源 题目分析 来源:acwing 分析:和下面这题是一道题: PAT甲级1137 Final Grading:[C++题解]结构体.排序.哈希表.结构体构造函数.结构体内写函 ...

  5. C++结构体多级排序的三种方法

    C++结构体多级排序的三种方法 struct node{int chinese,math;char name[15]; }; 需求:按数学成绩从大到小排序  1.自定义比较器 //自定义比较函数 bo ...

  6. C语言结构体自定义排序

    结构体自定义排序: 在最基础的C语言中,排序较为简单的有三种:冒泡,选择,插入.其中选择最劣.复杂一点的有快速排序和归并排序,在这里后两种我就不介绍了. 在使用结构体排序的时候,里面可能有许多不同的对 ...

  7. golang 结构体struct、数组、结构体数组 定义与赋值 、json string转struct

    文章目录 1.结构体struct 1.1 声明结构体 1.2 初始化结构体 以及 传参 2. 结构体数组.append 3. 接口返回 含数组的结构体 常用写法 json string转struct ...

  8. C++中的结构体vector排序详解

    C++中的结构体vector排序详解 使用sort函数对一个vector很常用,前提是通文件中必须包含#include ,但是针对结构体vector排序则需要进行一定的改动.具体事例如下所示: // ...

  9. C语言 · 运用结构体的排序方法

    AllSight C语言 · 运用结构体的排序方法 之前遇到排序只想着最原始的方法,诸如冒泡,选择,快速排序等等,刚刚跟大牛学会了结构体的方法来排序,这样的话以后再也不用怕成绩统计.名次排序之类的题目 ...

最新文章

  1. Oracle 中多个字段显示成一列
  2. JS阻止事件冒泡的3种方法,以及他们之间的不同
  3. Leetcode 191. 位1的个数 解题思路及C++实现
  4. oracle 强制恢复,oracle数据库恢复
  5. 时间序列预测:I概述
  6. (转载)Unity真机调试
  7. SAP CDS view自学教程之八:SAP Fiori Elements里不同类型的annotation
  8. oracle exacc,【学习笔记】Oracle 11GR2新特性Adaptive Cursor Sharing(ACS)
  9. echarts 树图样式美化_echarts2 tree树图自定义显示缩放大小、位置
  10. SpringBoot工程不注册到Eureka上
  11. 绿盟科技:“无敌舰队”DDoS勒索防御关键是应急经验积累
  12. 运兴ETF:期权多空双向,策略多样优势大
  13. C语言/C++常见习题问答集锦(十九)之C语言与漫天飞雪
  14. 盲人的福音:布里斯托大学团队让AI学会了键入盲文
  15. android启动页广告图,一张图搞定APP启动页广告
  16. 算法题 硬币组合问题
  17. linu学习第二天:文件系统相关操作
  18. 计算物理学(数值分析)上机实验答案5、常微分方程初值问题的数值解法
  19. 一个字节中的1的个数
  20. 利用requsets、bs4、re库爬取豆瓣图书top250【Python】

热门文章

  1. SCons: A software construction tool
  2. Managed Metadata Service介绍系列 之三
  3. 牛客 - Alice and Bob(尺取+二分)
  4. CodeForces - 1332B Composite Coloring(数论+构造)
  5. python学全栈还是运维_Python全栈学习——Python基础及Web开发
  6. 安卓入门系列-04常见布局之LinearLayout(线性布局)
  7. python高级语法-套接字编程之UDP和TCP编程
  8. Delphi中String与PAnsiChar转换
  9. 对弈程序基本技术----Alpha-Beta搜索
  10. 使用OnCtlColor函数消息打造背景