dongmi5015 2015-03-16 10:49
浏览 339
已采纳

在golang中对降序结构进行排序

Please see this playground. What I want is quiet simple: I want to sort all "records" descending. I cannot figure out how. Reason is that my struct contains one or more records and I'm not sure how to handle that. (f.e. this works fine)

  • 写回答

2条回答 默认 最新

  • duangan9251 2015-03-16 12:03
    关注

    From your example, you are trying to sort the root element <records> instead of the sub-elements <record>.

    This example works better, with:

    • type ById []Record
    • sort.Sort(sort.Reverse(ById(records.Records)))

    Your Len(), Swap() and Less() methods remain unchanged, but use as a receiver a Record instance instead of Records.

    Output:

    {{ records} 
      [{{ record} 64321 http://golang.com} 
       {{ record} 3456 http://www.lommers.org/sampleurl} 
       {{ record} 4 http://www.this-is-my-url.com}]} 
    

    As I mention in "How to avoid re-implementing sort.Interface for similar golang structs", this changes with Go 1.8 and commit ad26bb5:

    You only define a Less() anonymous lambda

    a := ById(records.Records)
    sort.Slice(a, func(i, j int) bool {
        return a[i] > a[j]
    })
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 stm32代码移植没反应
  • ¥15 matlab基于pde算法图像修复,为什么只能对示例图像有效
  • ¥100 连续两帧图像高速减法
  • ¥15 组策略中的计算机配置策略无法下发
  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)
  • ¥50 mac mini外接显示器 画质字体模糊