iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > GO >Go语言sort包函数使用示例
  • 200
分享到

Go语言sort包函数使用示例

GO示例函数sort 2022-06-07 20:06:53 200人浏览 薄情痞子
摘要

目录sort包简介sort包内置函数sort.Ints(x []int)sort.Slice(x any, less func(i, j int) bool)sort.Sort

目录

sort包简介

sort包内置函数

sort.Ints(x []int)

sort.Slice(x any, less func(i, j int) bool)

sort.Sort(data Interface)

sort.SearchInts(a []int, x int) int

sort.Search(n int, f func(int) bool) int

sort包简介

官方文档golang的sort包用来排序,二分查找等操作。本文主要介绍sort包里常用的函数,通过实例代码来快速学会使用sort包

sort包内置函数 sort.Ints(x []int)
ints := []int{1, 4, 3, 2}
fmt.Printf("%v\n", ints) 
sort.Ints(ints) //默认升序
fmt.Printf("%v\n", ints) //[1 2 3 4] 
sort.Sort(sort.Reverse(sort.IntSlice(ints))) //降序排序 
fmt.Printf("%v\n", ints) //[4 3 2 1]

sort.Strings(x []string)

sort.Float64s(x []float64)

使用方法同上,都是对内置int string float64类型的便捷排序

sort.Slice(x any, less func(i, j int) bool)

传入对象是切片,要自己实现回调函数

slices := []int{1, 1, 4, 5, 1, 4}
sort.Slice(slices, func(i, j int) bool {
return slices[i] < slices[j]
})
fmt.Printf("%v\n", slices)//[1 1 1 4 4 5]

同时也可以对结构体自定义排序规则

type stu struct {
name string
age  int
}
stus := []stu{{"h", 20}, {"a", 23}, {"h", 21}}
sort.Slice(stus, func(i, j int) bool {
if stus[i].name == stus[j].name {
return stus[i].age > stus[j].age // 年龄逆序
}
return stus[i].name < stus[j].name // 名字正序
})
fmt.Printf("%v\n", stus) //[{a 23} {h 21} {h 20}]
sort.Sort(data Interface)

自定义排序,需要实现 Len() Less() Swap() 三个方法

type Interface interface {
// Len is the number of elements in the collection.
Len() int
// Less reports whether the element with
// index i should sort before the element with index j.
Less(i, j int) bool
// Swap swaps the elements with indexes i and j.
Swap(i, j int)
}

使用代码

type stu struct {
name string
age  int
}
type student []stu
func (s student) Len() int {
return len(s)
}
func (s student) Less(i, j int) bool {
if s[i].name == s[j].name {
return s[i].age > s[j].age // 年龄逆序
}
return s[i].name < s[j].name // 名字正序
}
func (s student) Swap(i, j int) {
s[i], s[j] = s[j], s[i]
}
func main() {
stus1 := student{{"h", 20}, {"a", 23}, {"h", 21}}
sort.Sort(stus1)
fmt.Printf("%v\n", stus1) //[{a 23} {h 21} {h 20}] 使用效果等同于sort.Slice
}

使用效果等同于sort.Slice后者代码量较少

sort.SearchInts(a []int, x int) int

该函数是用来二分查找的, 默认是在左边插入

arr := []int{1, 2, 3, 4, 5, 6, 7}
idx := sort.SearchInts(arr, 4)
fmt.Printf("%v\n", idx) // 3

sort.SearchFloat64s(a []float64, x float64) int

sort.SearchStrings(a []string, x string) int

这两函数功能同上

sort.Search(n int, f func(int) bool) int

自定义的二分查找,回调函数需要自己实现查找条件

arr := []int{1, 2, 3, 4, 5, 6, 7}
idx := sort.Search(len(arr), func(i int) bool {
return arr[i] > 4
})
fmt.Printf("%v\n", idx) //4

相比SearchInts,通过自定义条件便实现了相等情况下在右边插入,前者默认是在左边

更高级一点的用法

mysring := []string{"abcd", "bcde", "bfag", "cDDD"}
idx := sort.Search(len(mysring), func(i int) bool {
// 查找头两位字母不是b的,,返回找到的第一个
return mysring[i][0] != 'b' && mysring[i][1] != 'b'
})
fmt.Printf("%v\n", mysring[idx]) // cddd
mysring := []string{"abcd", "bcde", "bfag", "cddd"}
idx := sort.Search(len(mysring), func(i int) bool {
//查找第一个字母不是b的
return mysring[i][0] <= byte('b')
})
fmt.Printf("%v\n", mysring[idx]) // abcd

以上就是Go语言sort包使用示例的详细内容,更多关于Go语言sort包的资料请关注编程网其它相关文章!


您可能感兴趣的文档:

--结束END--

本文标题: Go语言sort包函数使用示例

本文链接: https://www.lsjlt.com/news/30695.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Go语言sort包函数使用示例
    目录sort包简介sort包内置函数sort.Ints(x []int)sort.Slice(x any, less func(i, j int) bool)sort.Sort...
    99+
    2022-06-07
    GO 示例 函数 sort
  • Go语言的sort包函数如何使用
    本篇内容主要讲解“Go语言的sort包函数如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Go语言的sort包函数如何使用”吧!sort包简介官方文档Golang的sort包用来排序,二分...
    99+
    2023-06-30
  • Go语言func匿名函数闭包示例详解
    目录前言定义函数也可以作为函数的参数函数作为函数的返回值匿名函数闭包总结前言 今天继续为大家更新Go语言学习记录的文章。 函数是任何一门编程语言最重要的组成部分之一。函数简单理解是一...
    99+
    2022-11-13
  • go语言调用其他包中的函数简单示例
    目录需求步骤附:Go语言同一个包中不同文件之间函数调用总结需求 我们想在程序的入口main.go中调用service包下的user_service.go中的函数,该如何调用呢?示例...
    99+
    2023-01-13
    go 函数调用 go语言调用函数
  • GO语言字符串处理Strings包的函数使用示例讲解
    目录常用的字符串处理函数(1) Contains(2) Join(3) Index(4) Repeat(5) Replace(6) Split(7) Trim(8) Fields字符...
    99+
    2022-11-13
  • 如何使用Go语言打包接口函数?
    Go语言是一门快速发展的编程语言,它已成为许多开发者的首选语言。在Go语言中,打包接口函数是一项非常重要的任务。本文将介绍如何使用Go语言打包接口函数。 一、什么是打包接口函数? 打包接口函数是将多个接口函数打包成一个大的接口函数。打包后的...
    99+
    2023-09-20
    打包 接口 函数
  • Go语言基础函数基本用法及示例详解
    目录概述语法函数定义一.函数参数无参数无返回有参数有返回函数值传递函数引用传递可变参数列表 无默认参数函数作为参数二、返回值多个返回值跳过返回值匿名函数匿名函数可以赋值给一个变量为函...
    99+
    2022-11-12
  • c语言怎么调用sort函数排序
    在C语言中,可以使用stdlib.h头文件中的qsort函数来进行排序操作。qsort函数的原型如下:```cvoid qsort(...
    99+
    2023-10-08
    c语言
  • go语言编程实现递归函数示例详解
    目录前言函数中的 return递归的问题总结前言 本篇文章主要是记录一下在 GScript 中实现递归调用时所遇到的坑,类似的问题在中文互联网上我几乎没有找到相关的内容,所以还是很有...
    99+
    2022-11-11
  • Go语言select语句用法示例
    目录用法使用场景实现收发功能注意事项用法 多个通道 Channel 中信息的发送和接受处理的专用的语句—select 语句。select 语句会阻塞,直到其中的一个发送/...
    99+
    2022-11-11
  • go语言打包的网页wasm示例详解
    目录基本环境wasm部分基本环境 有时需要做一些前端的数据处理,但是又不想把数据出来的方式就这么简单的暴露在js里,然后就用了wasm来包装这个处理函数,当然,这样也能提高性能。 新...
    99+
    2022-11-11
  • Go语言中基础闭包的示例分析
    这篇文章将为大家详细讲解有关Go语言中基础闭包的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一. 闭包概述闭包就是解决局部变量不能被外部访问的一种解决方案闭包是把函数当作返回值的一种应用二. 代...
    99+
    2023-06-25
  • Go语言restyhttp包调用jenkinsapi实例
    目录前言Resty特色演示例子简单get请求增强get请求灵活post请求多文件上传文件下载实战例子构造一个jenkins客户端获取jenkins job信息无参构建job查看...
    99+
    2022-06-09
    GO
  • Go语言中如何打包接口函数?
    Go语言是一门非常流行的编程语言,在很多场景下都有广泛的应用。在Go语言中,函数是一等公民,这就意味着我们可以像对待变量一样对待函数。而且,Go语言中还有一个非常重要的概念——接口。接口是一种抽象的类型,通过接口可以实现多态性,让程序更加灵...
    99+
    2023-09-20
    打包 接口 函数
  • go语言中time包的函数有哪些
    这篇“go语言中time包的函数有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“go语言中time包的函数有哪些”文章吧...
    99+
    2023-07-06
  • Go语言中io包核心接口示例详解
    目录前言ReaderWriterCloserSeeker组合接口总结前言 IO 操作是我们在编程中不可避免会遇到的,例如读写文件,Go语言的 io 包中提供了相关的接口,定义了...
    99+
    2022-06-07
    io GO 示例 go语言 接口
  • Go语言使用指针的示例分析
    这篇文章给大家分享的是有关Go语言使用指针的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。普通指针和C语言一样, 允许用一个变量来存放其它变量的地址, 这种专门用于存储其它变量地址的变量, 我们称之为指针...
    99+
    2023-06-20
  • Go语言包如何使用
    本篇内容介绍了“Go语言包如何使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!包(package)是多个Go源码的集合,是一种高级的代码复...
    99+
    2023-07-04
  • Go语言基础go install命令使用示例详解
    目录go install一、使用二、包名和目录名的关系三、注意 go install 编译并安装代码包,对于库,会生成目标库文件,并且放置到GOPATH/pgk目录下。 对于可执文件...
    99+
    2022-11-12
  • Go语言基础go fmt命令使用示例详解
    go fmt 命令主要是用来帮你格式化所写好的代码文件【很多第三方集成软件都是使用了go fmt命令】 一、使用: go fmt <文件名>.go 使用go fmt命令...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作