Go 语言中的排序与 sort 包
Go 语言的标准库提供了一个包,如果我们想对数组、切片甚至自定义类型进行排序,可以使用该包。在本文中,我们将了解三个主要函数,如果我们想对 Go 语言中的切片进行排序,可以使用这些函数。我们还将了解如何创建自定义排序函数和自定义比较器。
让我们首先检查如何对整数、float64 和字符串值的切片进行排序。
示例
请考虑以下代码。
package main
import (
"fmt"
"sort"
)
func main() {
integerSlice := []int{3, 2, 14, 9, 11}
sort.Ints(integerSlice)
fmt.Println("After sorting", integerSlice)
floatSlice := []float64{2.32, 9.87, 1.98, 0.88}
sort.Float64s(floatSlice)
fmt.Println("After sorting", floatSlice)
stringSlice := []string{"mukul", "shreya", "naman"}
sort.Strings(stringSlice)
fmt.Println(stringSlice)
}在上面的代码中,我们使用了 **sort** 包的以下三个函数
sort.Ints
sort.Float64s
sort.Strings
输出
如果我们在上述代码上运行命令 **go run main.go**,则将在终端中获得以下输出。
After sorting [2 3 9 11 14] After sorting [0.88 1.98 2.32 9.87] [mukul naman shreya]
使用自定义比较器进行排序
示例
如果我们想对 **Go** 中的 **struct** 进行排序,我们也可以定义一个自定义比较器。请考虑以下代码。
package main
import (
"fmt"
"sort"
)
type Person struct {
name string
age int
}
func main() {
people := []Person{{"Mukul", 24}, {"Deepak", 26}, {"Mayank", 24}}
fmt.Println("Before sorting", people)
// sorting on the basis of age
sort.Slice(people, func(i, j int) bool {
return people[i].age < people[j].age
})
fmt.Println("After sorting1", people)
// sorting on the basis of name
sort.Slice(people, func(i, j int) bool {
return people[i].name < people[j].name
})
fmt.Println("After sorting2", people)
}输出
如果我们在上述代码上运行命令 **go run main.go**,则将在终端中获得以下输出。
Before sorting [{Mukul 24} {Deepak 26} {Mayank 24}]
After sorting1 [{Mukul 24} {Mayank 24} {Deepak 26}]
After sorting2 [{Deepak 26} {Mayank 24} {Mukul 24}]
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP