使用Golang sort包实现自定义排序

排序是每个程序员在工作比做的工作之一,有很多排序算法供你选择,通常我们会利用开发包提供的实现。本文学习使用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