• Go 时间轴排序


     

    产品经理:这次评个小需求,大概10分钟就完事儿了

                                                                        好,不要每次都说10分钟,实际讨论一个小时  :小猿

    产品经理:放心,最多就10分钟

                                                                                                                 OK,开始你的表演吧:小猿

    产品经理:我们要实现一个时间轴,时间顺序排列

    产品经理:好了,我讲完了,下班前我要验收。

                                                                                                                                      ---------- :小猿
     


                                       宗旨:满足产品经理的一切不切实际的幻想 


    例子:

            数据一:

    1. // GetGirlfriend 生活
    2. func GetGirlfriend() (resp []*Data) {
    3. resp = make([]*Data, 3)
    4. resp = []*Data{
    5. {
    6. Id: 1,
    7. Username: "如花",
    8. Event: "摸鱼-约逛街",
    9. Datetime: "2022-11-09 14:00",
    10. Timestamp: 1667973600000,
    11. },
    12. {
    13. Id: 2,
    14. Username: "如花",
    15. Event: "吃火锅",
    16. Datetime: "2022-11-09 18:30",
    17. Timestamp: 1667989800000,
    18. },
    19. {
    20. Id: 3,
    21. Username: "如花",
    22. Event: "看电影",
    23. Datetime: "2022-11-09 20:30",
    24. Timestamp: 1667997000000,
    25. },
    26. }
    27. return
    28. }

    数据二:

    1. // GetLife 活着
    2. func GetLife() (resp []*Data) {
    3. resp = make([]*Data, 3)
    4. resp = []*Data{
    5. {
    6. Id: 1,
    7. Username: "仙儿",
    8. Event: "沟通需求v1.0",
    9. Datetime: "2022-11-09 14:30",
    10. Timestamp: 1667975400000,
    11. },
    12. {
    13. Id: 2,
    14. Username: "仙儿",
    15. Event: "讨论技术方案",
    16. Datetime: "2022-11-09 16:00",
    17. Timestamp: 1667980800000,
    18. },
    19. {
    20. Id: 3,
    21. Username: "仙儿",
    22. Event: "写PPT",
    23. Datetime: "2022-11-09 17:30",
    24. Timestamp: 1667986200000,
    25. },
    26. }
    27. return
    28. }

     

    功能拆解:

    1. 数据源合并
    2. 构建时间集合、数据集合(k=>v)
    3. 时间集合-排序
    4. 遍历排序后的时间集合,组装数据
    5. 返回格式化数据

    解决:

    1. package main
    2. import (
    3. "encoding/json"
    4. "fmt"
    5. "sort"
    6. )
    7. type Data struct {
    8. Id int32 `json:"id"`
    9. Username string `json:"username"`
    10. Event string `json:"event"`
    11. Datetime string `json:"datetime"`
    12. Timestamp int64 `json:"timestamp"`
    13. }
    14. func main() {
    15. // 我的一天
    16. myDay := make([]*Data, 0, 6)
    17. myDay = append(myDay, GetGirlfriend()...)
    18. myDay = append(myDay, GetLife()...)
    19. // 时间 slice
    20. timestamp := make([]int, 0)
    21. // data map
    22. dataMap := make(map[int64]*Data)
    23. for _, v := range myDay {
    24. timestamp = append(timestamp, int(v.Timestamp))
    25. dataMap[v.Timestamp] = v
    26. }
    27. // 排序(正序)
    28. sort.Ints(timestamp)
    29. // 格式化数据
    30. resp := make([]*Data, 0, 6)
    31. for _, value := range timestamp {
    32. if info, ok := dataMap[int64(value)]; ok {
    33. resp = append(resp, info)
    34. }
    35. }
    36. // 输出
    37. s, _ := json.Marshal(resp)
    38. fmt.Printf(string(s))
    39. }

    打印:


    我为人人,人人为我,美美与共,天下大同。 

  • 相关阅读:
    安科瑞环保设施用电监测设备ADW400技术要求-Susie 周
    (19)语义分割(5)_FCN基于VGG16的实现
    ROS2机器人f1tenth之CLI工具基础
    结构体大小的计算(结构体内存对齐)
    Elasticsearch 8.X 分词插件版本更新不及时解决方案
    es6中的let与const关键字及其与var关键字的不同
    JavaAPI常用类01
    麒麟信安石勇博士荣获openEuler社区年度开源贡献之星
    Python---文件打开、读取、写入
    毅速课堂:3D打印随形水路在小零件注塑中优势明显
  • 原文地址:https://blog.csdn.net/qq_37837134/article/details/127787468