golang slice 排序
如下示例為,在一個Person切片中,按年齡大小進行排序
package main import ( "fmt" "sort" ) /*slice 排序示例*/ type Person struct { Age int } type PersonSlice []Person func (s PersonSlice) Len() int{ return len(s) } func (s PersonSlice) Swap(i, j int){ s[i], s[j] = s[j], s[i] } func (s PersonSlice) Less(i, j int) bool { return s[i].Age < s[j].Age } func main() { persons := PersonSlice{ Person{ Age: 1, }, Person{ Age: 5, }, Person{ Age: 2, }, } sort.Sort(persons) fmt.Printf("after sort:%+v", persons) }
輸出 after sort:[{Age:1} {Age:2} {Age:5}]
說明:被排序的結構體需要實現如下介面
type Interface interface { // Len is the number of elements in the collection. Len() int // Less reports whether the element with // index i should sort before the element with index j. Less(i, j int) bool // Swap swaps the elements with indexes i and j. Swap(i, j int) }