首页 > 其他分享 >go排序方法总结

go排序方法总结

时间:2023-02-13 14:46:15浏览次数:37  
标签:总结 sort family int Age func go ByAge 排序

1、方法总结

  • sort.Ints
  • sort.Floats
  • sort.Strings
  • sort.SliceStable
  • sort.Interface{}

2、实例

//sort.Ints()
s := []int{4, 2, 3, 1}
sort.Ints(s)
fmt.Println(s) // 输出[1 2 3 4]


//sort.SliceStable()
family := []struct {
    Name string
    Age  int
}{
    {"Alice", 23},
    {"David", 2},
    {"Eve", 2},
    {"Bob", 25},
}
// 用 age 排序,年龄相等的元素保持原始顺序
sort.SliceStable(family, func(i, j int) bool {
    return family[i].Age < family[j].Age
})
fmt.Println(family) // [{David 2} {Eve 2} {Alice 23} {Bob 25}]
 //下面实现排序order by age asc, name desc,如果 age 和 name 都相等则保持原始排序
sort.SliceStable(family, func(i, j int) bool {
    if family[i].Age != family[j].Age {
        return family[i].Age < family[j].Age
    }
    return strings.Compare(family[i].Name, family[j].Name) == 1
})
fmt.Println(family) // [{Eve 2} {David 2} {Alice 23} {Bob 25}]


//sort.Interface{}
type Person struct {
    Name string
    Age  int
}
// ByAge 通过对age排序实现了sort.Interface接口
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] }
func main() {
    family := []Person{
        {"David", 2},
        {"Alice", 23},
        {"Eve", 2},
        {"Bob", 25},
    }
    sort.Sort(ByAge(family))
    fmt.Println(family) // [{David, 2} {Eve 2} {Alice 23} {Bob 25}]

    sort.
}

  

标签:总结,sort,family,int,Age,func,go,ByAge,排序
From: https://www.cnblogs.com/mango1997/p/17116269.html

相关文章

  • Hive 在工作中的调优总结
    总结了一下在以往工作中,对于HiveSQL调优的一些实际应用,是日常积累的一些优化技巧,如有出入,欢迎在评论区留言探讨~EXPLAIN查看执行计划建表优化分区分区表基本操作,par......
  • 【转载】go.sum中特殊hash如何计算
    Golang为了依赖的安全考虑,在go.mod的基础上引入了go.sum,go.sum文件的作用主要是记录项目依赖的hash值,防止被人修改。在分析具体项目的go.sum文件后可以发现go.sum中不仅......
  • Calling C++ Code From Go With SWIG
    http://zacg.github.io/blog/2013/06/06/calling-c-plus-plus-code-from-go-with-swig/ RecentlywhileworkingonaGobasedprojectIneededtousesomefunctio......
  • [数据结构] 排序算法的原理代码及可视化演示
    排序算法本文汇总了核心排序算法及其代码实现:-插入法:直接插入排序,折半插入排序,2-路插入排序(折半插入的改进版)(待更新),希尔排序(待更新)-交换法:冒泡排序,快速......
  • 【问题讨论】关于golang调用so的问题的讨论
    runtime:dlopen/dlsymwithoutCGo#18296 Open  iamacarpetopenedthisissueDec13,2016·12comments  Open  ......
  • 二叉排序树的平均查找长度(成功&&不成功)
    二叉排序树的平均查找长度上图所示为二叉排序树查找成功时的平均查找长度:ASL=∑(本层高度*本层元素结点个数)/结点总数=(1*1+2*2+3*2)=11/5查找失败时的平......
  • HiveSQL 工作实战总结
    记录一些工作中有意思的统计指标,当然做过一些简化方便大家阅读,后续会不断更新,欢迎关注追踪~问题类型连续问题两种思路第一种:日期减去一列数字得出日期相同,主要是通过......
  • SpringCloud 微服务工具集总结
    文章目录​​1、微服务​​​​2、为什么要用微服务?​​​​2.1优势:​​​​2.2缺点:​​​​3、SpringCloud微服务工具集​​​​4、SpringCloud工具集核心组件​​​​4.......
  • 蓝桥杯链表总结(3)
    力扣链表相关题目反转链表题目:给你单链表的头节点head,请你反转链表,并返回反转后的链表。示例1:输入:head=[1,2,3,4,5]输出:[5,4,3,2,1]示例2:输入:head=[1,2]......
  • go连接kafka
    Part1前言本文主要介绍如何通过go语言连接kafka。这里采用的是sarama库。​​https://github.com/Shopify/sarama​​Part2库的安装goget-ugithub.com/Shopify/saramago......