Go 实现对返回的map进行分页

254 次浏览次阅读
没有评论

根据业务场景需要,API 接口可能需要对一个 map 类型的数据进行 json 序列化返回给前端,当 map 中的 key 过多时,也是需要分页的。如何实现?

Deomo 代码:

var data []map[string]string

type Res struct {
    Total int `json:"total"`
    List  []map[string]string
}

func DemoData(param *params.DemoData) (*Res, error) {res := make(map[string]string)
    res["a"] = "a"
    res["b"] = "b"
    res["c"] = "c"
    res["d"] = "d"
    res["f"] = "f"

    for i, v := range res {m := make(map[string]string)
        m[i] = v
        data = append(data, m)
    }

    r := getDemoDataPage(param.Page, param.PageSize)

    rr := &Res{}
    rr.Total = len(r)
    rr.List = r
    return rr, nil
}

func getDemoDataPage(page int, pageSize int) []map[string]string {start := (page - 1) * pageSize
    stop := start + pageSize

    if start > len(data) {return nil}

    if stop > len(data) {stop = len(data)
    }

    return data[start:stop]
}
正文完
 0
评论(没有评论)