我的Go+语言初体验——Go+ 多种数据类型排序方法详解

Data-Mining Data-Mining 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

目录

前言

正文

基础规则排序

整型数据

字符串数据

浮点型数据

自定义规则排序

结尾


 

前言

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+ 的小伙伴们有所帮助。

 

“我的Go+语言初体验” | 征文活动进行中......

 

...全文

相关推荐

评论
收藏 已收藏
分享
返回顶部
Data-Mining
Data-Mining 2020年博客之星Top39 2020年博客之星Top39领域专家: 操作系统技术领域 领域专家: 操作系统技术领域
Go+ 开发者社区 1,099 成员 209 内容