Go 实现对返回的map进行分页
根据业务场景需要,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]
}