为了账号安全,请及时绑定邮箱和手机立即绑定

在 golang 中对结构图进行排序

在 golang 中对结构图进行排序

Go
芜湖不芜 2021-07-28 21:04:41
我有一张像这样的地图Key: 9970DLXEVOQ0O Value: [{9972IOFNIDER6 0.3},{9972MFYWYJIEK 0.2},{9972QIUUINW6R 0.5}]Key: 9970DLXEVOQ01 Value: [{9972IOFNIDER6 0.3}]Key: 9970QYPOYUUIO Value: [{9972VOFA3OJLK 0.4}]在名为product_deal 的golang中,键是字符串,值是结构:type product_detail struct {     deal_id string     rating float64}我需要根据每个值字段中的评级(降序)对值进行排序,输出应该是Key: 9970DLXEVOQ0O Value: [{9972QIUUINW6R 0.5},{9972IOFNIDER6 0.3},{9972MFYWYJIEK 0.2}]Key: 9970DLXEVOQ01 Value: [{9972IOFNIDER6 0.3}]Key: 9970QYPOYUUIO Value: [{9972VOFA3OJLK 0.4}]有关如何完成此操作的任何想法。我确实看过其他帖子,这些帖子对地图进行了排序,但无法获得实现。任何帮助,将不胜感激。
查看完整描述

1 回答

?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

为了扩展我对原始问题的评论,这里有一个可以在Go playground上运行的工作示例。请注意,我可能误解了您想要的类型的结构,但这个想法应该很清楚。


package main


import "fmt"

import "sort"


type Product struct {

    Id     string

    Rating float64

}


type Deal struct {

    Id       string

    products []Product

}


type Deals []Deal


// Ensure it satisfies sort.Interface

func (d Deals) Len() int           { return len(d) }

func (d Deals) Less(i, j int) bool { return d[i].Id < d[j].Id }

func (d Deals) Swap(i, j int)      { d[i], d[j] = d[j], d[i] }


func main() {

    deals := Deals{

        {"9970DLXEVOQ0O", []Product{{"9972MFYWYJIEK", 0.2}}},

        {"9970DLXEVOQ01", []Product{{"9972IOFNIDER6", 0.3}}},

        {"9970QYPOYUUIO", []Product{{"9972VOFA3OJLK", 0.4}}},

        {"9970DLYKLAO8O", []Product{{"9972IOFNIDER6", 0.3}}},

        {"9970QYPMNAUUI", []Product{{"9972QIUUINW6R", 0.5}}},

    }


    sort.Sort(deals)


    for _, d := range deals {

        fmt.Println(d)

    }

}



查看完整回答
反对 回复 2021-08-02
  • 1 回答
  • 0 关注
  • 246 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信