go语言中提供了sort包执行排序的相关操作,但并不像Python那样可以直接用“.”符号调用sort()函数。
1、直接调用。go中提供了三种类型数据的排序int64 float64 string
x := []int{4, 2, 7, 4, 12, 4, 2}
fmt.Println(x)
fmt.Println(sort.IntsAreSorted(x))
sort.Ints(x)//默认升序
fmt.Println(sort.IntsAreSorted(x))
fmt.Println(x)
sort.Sort(sort.Reverse(sort.IntSlice(x)))//降序
fmt.Println(x)
运行结果:
其他两个方法调用类似 sort.Float64s();sort.Strings()
2、针对sort包中未提供的类型,如int32,float32等,需实现接口Len()、Swap()、Less()
type Int32List []int32
func (s Int32List) Len() int{return len(s)}
func (s Int32List) Swap(i,j int) {s[i],s[j]=s[j],s[i]}
func (s Int32List) Less(i,j int) bool {return s[i]<s[j]}
完整代码如下:
package main
import "fmt"
import (
"sort"
)
type Int32List []int32
func (s Int32List) Len() int{return len(s)}
func (s Int32List) Swap(i,j int) {s[i],s[j]=s[j],s[i]}
func (s Int32List) Less(i,j int) bool {return s[i]<s[j]}
func main() {
k := []int32{3, 2, 6, 7, 9, 3, 2, 1}
sort.Sort(Int32List(k))
fmt.Println(k)//升序
}