我的Go+语言初体验——Go+ 多种数据类型排序方法详解
目录
前言
Go+ 作为一种类似 Golang 的编程语言,最早是由七牛云提出的,此举填补了国人开发者在数据科学领域的空白。前后经过一年多时间的打磨,目前,Go+ 1.0 已于今年10月15日正式发布。目前,Go+ 1.0 已经能够工程化使用,而且语言的使用门槛进一步降低,更接近自然语言,1.0 的门槛甚至比 Python 更低,使得 Go+ 更适合 STEM 教育的场景。
正文
Go+ 的本意是希望融合工程开发的 Go、数据科学领域的 Python、编程教学领域的 Scratch,以 Python 之形结合 Go 之心,让工程师处理数据不需要学习新的开发语言,让初学者学习编程、开发作品的门槛更低。今天,我们就来详细介绍一下 Go+ 是如何处理不同数据类型的排序问题的。
Go+ 支持对切片和数组中的数据进行排序,使用的内置工具库是 sort 包,导入方式如下:
import (
"sort"
)
接下来,我们就针对一般规则和自定规则的排序情况分别进行介绍。
基础规则排序
整型数据
Go+ 利用 sort 包的 Ints 方法对整型数据进行升序排列。
示例代码:
import (
"sort"
)
arr := [10, 2, 5, 67, 800, 49]
println("排序前:", arr)
sort.Ints(arr)
println("排序后:", arr)
执行结果:
排序前: [10 2 5 67 800 49] 排序后: [2 5 10 49 67 800]
另外,我们还可以使用 IntsAreSorted() 方法对切片或者数组进行判断,判断是否为升序排列。
示例代码:
import (
"sort"
)
arr1 := [26, 11, 10]
res := sort.IntsAreSorted(arr1)
println("arr1 已经升序排列:", res)
arr2 := [1, 8, 119]
res = sort.IntsAreSorted(arr2)
println("arr2 已经升序排列:", res)
执行结果:
arr1 已经升序排列: false arr2 已经升序排列: true
字符串数据
Go+ 利用 sort 包可以对字符串类型的数据进行升序排列,遇到相同字符时,顺位比对下一位。
示例代码:
import (
"sort"
)
arr := ["a", "ab", "ac", "d", "dd", "xxxxxx", "hello", "world"]
println("排序前:", arr)
sort.Strings(arr)
println("排序后:", arr)
执行结果:
排序前: [a ab ac d dd xxxxxx hello world] 排序后: [a ab ac d dd hello world xxxxxx]
浮点型数据
Go+ 利用 sort 包可以对浮点型数据进行升序排列。
示例代码:
import (
"sort"
)
arr := [0.1, 1.2, 88.0, 3.1415926, 6.6]
println("排序前:", arr)
sort.Float64s(arr)
println("排序后:", arr)
执行结果:
排序前: [0.1 1.2 88 3.1415926 6.6] 排序后: [0.1 1.2 3.1415926 6.6 88]
自定义规则排序
在实际开发过程,我们经常会遇到根据自身需要自定义排序规则的情况,下面我们就来介绍一下自定义排序方法如何实现。
如果想要实现自定义排序方法,首先需要实现 sort.Interface 的三个接口,分别是 Len,Less 和 Swap。三者的定义如下:
Len() int // 排序集合长度的方法
Less(i, j int) bool // i 位置和 j 位置元素的比较方法
Swap(i, j int) // i 位置和 j 位置元素的替换方法
示例代码:
import (
"sort"
)
type byLength []string
func (s byLength) Len() int {
return len(s)
}
func (s byLength) Swap(i, j int) {
s[i], s[j] = s[j], s[i]
}
func (s byLength) Less(i, j int) bool {
return len(s[i]) < len(s[j])
}
func main() {
people := ["mom", "sister", "hi", "brother"]
sort.Sort(byLength(people))
println(people)
}
执行结果:
[hi mom sister brother]
结尾
好啦,今天关于 Go+ 如何处理不同数据类型的排序问题,以及常规排序方法和自定义排序方法的具体实现就介绍完了。感兴趣的小伙伴,可以自己动手试一试,正文中都给出了示例代码和在线测试链接。希望今天介绍的内容对想学习 Go+ 的小伙伴们有所帮助。
相关推荐
Golang 使用接口实现泛型的方法示例
主要介绍了Golang 使用接口实现泛型的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
Golang算法问题之数组按指定规则排序的方法分析
主要介绍了Golang算法问题之数组按指定规则排序的方法,结合实例形式分析了Go语言数组排序相关算法原理与操作技巧,需要的朋友可以参考下
Golang 数据结构和算法 Data Structures & Algorithms In Go
经典的go 语言版本的数据结构和算法参考书,非常的通俗易懂。
go语言中排序sort的使用方法示例
golang中也实现了排序算法的包sort包,下面这篇文章就来给大家介绍了关于go语言中排序sort的使用方法,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧
深入理解golang的基本类型排序与slice排序
大家都知道排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。下面就来详细介绍golang的基本类型排序与slice排序,有需要的朋友们可以参考借鉴。



