go 为 stucts 排个序

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}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值