go 为 stucts 排个序

来源:互联网 发布:netty java实例 编辑:程序博客网 时间:2024/06/06 06:29
type CardData struct {   CardType int   CardValue  int}type Cards []*CardData
//重写sort的三个方法即可
func (c Cards)Len() int { //重写   return len(c)}func (c Cards)Less(i, j int) bool {//重写   if c[i].CardType == c[j].CardType{      return c[i].CardValue < c[j].CardValue   }else if c[i].CardType < c[j].CardType{      return true   }else {      return false   }   //return}func (c Cards)Swap(i, j int)  {//重写   c[i], c[j] = c[j], c[i]}func main()  {   cs := make(Cards,5)   cs[0] = &CardData{3,5}   cs[1] = &CardData{2,3}   cs[2] = &CardData{1,2}   cs[3] = &CardData{1,1}   cs[4] = &CardData{8,5}   fmt.Println(cs)   for i, v := range cs{      fmt.Println(i, *v)   }   sort.Sort(cs)   for i, v := range cs{      fmt.Println("----",i, *v)   }}
输出为:
[0xc0420361d0 0xc0420361e0 0xc0420361f0 0xc042036200 0xc042036210]0 {3 5}1 {2 3}2 {1 2}3 {1 1}4 {8 5}---- 0 {1 1}---- 1 {1 2}---- 2 {2 3}---- 3 {3 5}---- 4 {8 5}