dsbezji539113152 2015-04-17 08:09
浏览 17
已采纳

在GoLang中排序对

I know how to sort key/value with data type:

map[1:a 2:c 0:b]

using sort package of GoLang. How can I sort a Pair like the following:

[{c 2} {a 1} {b 0}]

I want the whole pair to be sorted either according to key or value? End result:

[{a 1} {b 0} {c 2}]

this is sorted according to keys. Below is sorted according to values:

[{b 0} {a 1} {c 2}]
  • 写回答

1条回答 默认 最新

  • dqe55175 2015-04-17 08:13
    关注

    You could implement Len, Swap and Less for a custom type. An example is given here: https://gobyexample.com/sorting-by-functions

    Here's how you could sort by key for your example: http://play.golang.org/p/i6-e4I7vih

    import (
        "fmt"
        "sort"
    )
    
    type Pair struct {
        Key   string
        Value int
    }
    
    type ByKey []Pair
    
    func (s ByKey) Len() int {
        return len(s)
    }
    
    func (s ByKey) Swap(i, j int) {
        s[i], s[j] = s[j], s[i]
    }
    
    func (s ByKey) Less(i, j int) bool {
        return s[i].Key < s[j].Key
    }
    
    func main() {
        pairs := []Pair{{"a", 1}, {"b", 0}, {"c", 2}}
        // Sort by Key
        sort.Sort(ByKey(pairs))
        fmt.Println(pairs) // [{a 1} {b 0} {c 2}]
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)