Go语言如何按点击量排序含日期键的结构体映射?
问题:按点击量排序日期键的统计数据
我正在开发一个存储分析数据的项目,目前整体运行正常,但遇到一个问题:需要对TotalsPerDay["2022-02-01"]这类内容按点击量(Clicks)进行排序。
我选择使用map[string]struct{}的原因是需要将日期作为键,值为结构体,以便在程序其他位置遍历所有记录并汇总单日数据。现有数据模型代码如下:
dataModel := types.DataModel{ Totals: types.DataModelTotals{ Clicks: 0, Impressions: 0, Position: 0, ClickThroughRate: 0, TotalsPerDay: map[string]types.DataModelTotalsPerDay{}, }, Searches: map[string]types.Searches{}, Pages: map[string]types.Pages{}, Countries: map[string]types.Countries{}, Devices: map[string]types.Devices{}, SearchFilter: map[string]types.SearchFilter{}, Dates: map[string]types.Dates{}, }
当前TotalsPerDay的示例结构:
TotalsPerDay { DataModelTotalsPerDay["2022-02-01"]{ Clicks: 17 }, DataModelTotalsPerDay["2022-02-01"]{ Clicks: 9 }, DataModelTotalsPerDay["2022-02-01"]{ Clicks: 82 }, DataModelTotalsPerDay["2022-02-01"]{ Clicks: 52 } }
期望排序后的结构:
TotalsPerDay { DataModelTotalsPerDay["2022-02-01"]{ Clicks: 82 }, DataModelTotalsPerDay["2022-02-01"]{ Clicks: 52 }, DataModelTotalsPerDay["2022-02-01"]{ Clicks: 17 }, DataModelTotalsPerDay["2022-02-01"]{ Clicks: 9 } }
将日期设为字符串键是为了方便前端遍历日期并展示数据。我尝试过多种排序函数但未得到预期结果,还听说map的元素无法排序,若该说法属实,该如何处理数据以便前端遍历日期并轻松获取点击量等统计数据?
以下是TotalsPerDay的JSON版本:
{"2022-08-27 00:00:00 +0000 UTC":{"clicks":6,"impressions":7558,"position":280683.4432563555,"clickThroughRate":280669.4432563555,"totalRrows":5436},"2022-08-28 00:00:00 +0000 UTC":{"clicks":1,"impressions":8061,"position":289043.214145452,"clickThroughRate":288990.8808121187,"totalRrows":5665},"2022-08-29 00:00:00 +0000 UTC":{"clicks":8,"impressions":8283,"position":303046.8245871944,"clickThroughRate":302952.8245871944,"totalRrows":5905},"2022-08-30 00:00:00 +0000 UTC":{"clicks":4,"impressions":8447,"position":300142.1673121948,"clickThroughRate":300071.1673121948,"totalRrows":5904},"2022-08-31 00:00:00 +0000 UTC": {"clicks":7,"impressions":8114,"position":285296.87973927736,"clickThroughRate":285158.87973927736,"totalRrows":5648},"2022-09-01 00:00:00 +0000 UTC":{"clicks":6,"impressions":8306,"position":297513.4591694122,"clickThroughRate":297337.4591694122,"totalRrows":5932},"2022-09-02 00:00:00 +0000 UTC":{"clicks":4,"impressions":7938,"position":284144.3877642734,"clickThroughRate":284102.3877642734,"totalRrows":5590},"2022-09-03 00:00:00 +0000 UTC":{"clicks":0,"impressions":7024,"position":266604.6929695027,"clickThroughRate":266536.6929695027,"totalRrows":5205}}
内容的提问来源于stack exchange,提问作者Angelo van Cleef
相关产品推荐
相关产品推荐

