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) } }