//利用sort对自定义结构体排序
package main
import (
"fmt"
"sort"
)
type Person struct {
Name string
Age int
}
type Persons []Person
func (p Persons) Len() int {
return len(p)
}
func (p Persons) Less(i, j int) bool {
return p[i].Age > p[j].Age
}
func (p Persons) Swap(i, j int) {
p[i], p[j] = p[j], p[i]
}
//按照接口中的某个字段排序
type SortByValue []map[string]interface{}
func (list SortByValue) Len() int {
return len(list)
}
func (list SortByValue) Less(i, j int) bool {
num_i, _ := list[i]["time"].(float64)
num_j, _ := list[j]["time"].(float64)
if num_i < num_j {
return true
} else if num_i > num_j {
return false
}
return true
}
func (list SortByValue) Swap(i, j int) {
var temp map[string]interface{} = list[i]
list[i] = list[j]
list[j] = temp
}
func main() {
persons := Persons {
{
Name:"test1",
Age: 20,
},
{
Name:"test2",
Age: 22,
},
{
Name:"test4",
Age: 33,
},
}
fmt.Println("排序前")