• Golang将map数组按照指定字段排序


    //获取用户获取的优惠券列表
    func GetCouponList(c *gin.Context) {
        defer func() {
            if r := recover(); r != nil {
                util.LogStack(r.(error))
                c.JSON(RequestSuccess, gin.H{"status": SysError, "data": r, "err_msg": "服务器内部错误"})
                return
            }
        }()
    
        var (
            loginToken         string
            luck_draw_res   []int
            getErr            error
            user_id         int
            params             map[string]string
        )
    
        coupon_list := make([]map[string]interface{}, 0)
        if luck_draw_res != nil {
            for _, val := range luck_draw_res {
                item := coupon_map[val]
                item["id"] = strconv.Itoa(val)
                title := item["title"]
                item["quota"] = substr(title)
                coupon_list = append(coupon_list, item)
            }
                   fmt.Println(coupon_list) //
    //[map[desc:15w元以上可用 id:53 quota:5888 title:5888元] map[desc:20w以上可用 id:52 quota:7888 title:7888元]]
            Sort("quota", coupon_list)  //排序,第一个参数是指定的key
        }
    
        c.JSON(http.StatusOK, gin.H{"status": StatusSuccess, "data": coupon_list, "msg": "Success"}); return
    }
    
    //截取字符串
    func substr(title interface{}) int {
        title_pro := title.(string)
    
        rs := []rune(title_pro)
        str := string(rs[0:len(rs)-1])
        val,_ := strconv.Atoi(str)
        return val  //这里截取后
    }
    
    
    
    
    //排序  start
    type MapsSort struct {
        Key     string
        MapList []map[string]interface{}
    }
    
    func (m *MapsSort) Len() int {
        return len(m.MapList)
    }
    
    func (m *MapsSort) Less(i, j int) bool {
        return m.MapList[i][m.Key].(int) > m.MapList[j][m.Key].(int)
    }
    
    func (m *MapsSort) Swap(i, j int) {
        m.MapList[i], m.MapList[j] = m.MapList[j], m.MapList[i]
    }
    
    func Sort(key string, maps []map[string]interface{}) []map[string]interface{} {
        mapsSort := MapsSort{}
        mapsSort.Key = key
        mapsSort.MapList = maps
        sort.Sort(&mapsSort)
    
        return mapsSort.MapList
    }
    
    //排序 end    
  • 相关阅读:
    试算平衡
    对账服务
    会计科目与账户
    支付系统难点全面梳理剖析:核算对账核心
    支付系统设计——你不可不知的会计核心(转发整理)
    支付系统设计之查漏补缺的一环:差错账处理
    支付清算业务总结
    财务对账系统v1.0立项到结项的整体回顾
    DNS视图及压力测试(四)
    一个快速检测系统CPU负载的小程序
  • 原文地址:https://www.cnblogs.com/wt645631686/p/13803768.html
Copyright © 2020-2023  润新知