例子來源於https://github.com/pmylund/sortutil 。sortutil採用反射機制,可以對結構内的任意一個字段進行排序,使用還是比較方便的。缺點是採用反射機制,可能排序性能不是最好的。 如果是一般的應用,sortutil也夠用了。 對性能比較苛刻要求的朋友,也可以自己參考Go官方API的sort包例子編寫自己的排序實現。
sortutil的具體實現這裡就不介紹了,自己看代碼吧。需要提醒的是,sortutil只能用在Slice結構,不是數組。
下面再貼個怎麽使用sortutil的例子:
// test_sort.go
package main
import "fmt"
import "sortit"
type Record struct {
Name string
Value float32
}
func main() {
// 定義一個Slice
v := []Record{
{"twelve", 12},
{"eleven", 11},
{"two", 2},
{"three", 3},
{"unknow", 0},
}
sortit.ByField(v, "Value")
fmt.Printf("%v\n", v)
fmt.Println()
sortit.ByField(v, "Name")
fmt.Printf("%v\n", v)
}