对结构体进行排序

package main

import (
    "fmt"
    "math/rand"
    "sort"
)

type Hero struct {
    Name string
    Age  int
}

type HeroSlice []Hero

func (hs HeroSlice) Len() int {
    return len(hs)
}

func (hs HeroSlice) Less(i, j int) bool {
    return hs[i].Age < hs[j].Age
}

func (hs HeroSlice) Swap(i, j int) {
    hs[i], hs[j] = hs[j], hs[i]

}

func main() {
    // var intSlice = []int{0, -1, 10, 87, -2}
    // 要求对intSlice切片进行排序
    // sort.Sort(intSlice)

    var heroes HeroSlice
    for i := 0; i < 10; i++ {
        hero := Hero{
            Name: fmt.Sprintf("村长-%d", rand.Intn(100)),
            Age:  rand.Intn(100),
        }
        heroes = append(heroes, hero)
    }

    // 调用sort.Sort
    sort.Sort(heroes)

    for _, v := range heroes {
        fmt.Println(v)
    }

}
原文地址:https://www.cnblogs.com/zhangzihong/p/14924452.html