例子来源于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) }