排序是每个程序员在工作比做的工作之一,有很多排序算法供你选择,通常我们会利用开发包提供的实现。本文学习使用sort包中的排序实现,在此基础上自定义排序函数实现对组合数据结构排序。
1. 简单排序示例
下面实现一个简单排序应用,可以对不同类型数组进行排序。
package main
import (
"fmt"
"sort"
)
func main() {
fmt.Println("Go Sorting Tutorial")
myInts := []int{1,3,2,6,3,4}
fmt.Println(myInts)
// we can use the sort.Ints
sort.Ints(myInts)
fmt.Println(myInts)
}
这里使用Ints方法,另外还要Float64s和Strings等用于对不同类型数组进行排序。
2. 自定义排序函数
本节我们介绍如何实现对复杂数据类型的排序。要实现自定义排序函数,首先定义该类型的数组。
ProgrmmerAge[]ProgrammerbyAge
Len()Swap()Less()ij
package main
import (
"fmt"
"sort"
)
type Programmer struct {
Age int
}
type byAge []Programmer
func (p byAge) Len() int {
return len(p)
}
func (p byAge) Swap(i, j int) {
p[i], p[j] = p[j], p[i]
}
func (p byAge) Less(i, j int) bool {
return p[i].Age < p[j].Age
}
func main() {
programmers := []Programmer{
Programmer{Age: 30,},
Programmer{Age: 20,},
Programmer{Age: 50,},
Programmer{Age: 1000,},
}
sort.Sort(byAge(programmers))
fmt.Println(programmers)
}
ProgrammerbyAge[{20} {30} {50} {1000}]
3. 总结
sort