首页 > 编程 > Golang > 正文

golang实现分页算法实例代码

2020-04-01 18:53:10
字体:
来源:转载
供稿:网友

前言

本文主要给大家介绍了关于golang分页算法的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧

示例代码如下:

//分页方法,根据传递过来的页数,每页数,总数,返回分页的内容 7个页数 前 1,2,3,4,5 后 的格式返回,小于5页返回具体页数func Paginator(page, prepage int, nums int64) map[string]interface{} { var firstpage int //前一页地址 var lastpage int //后一页地址 //根据nums总数,和prepage每页数量 生成分页总数 totalpages := int(math.Ceil(float64(nums) / float64(prepage))) //page总数 if page > totalpages {  page = totalpages } if page <= 0 {  page = 1 } var pages []int switch { case page >= totalpages-5 && totalpages > 5: //最后5页  start := totalpages - 5 + 1  firstpage = page - 1  lastpage = int(math.Min(float64(totalpages), float64(page+1)))  pages = make([]int, 5)  for i, _ := range pages {   pages[i] = start + i  } case page >= 3 && totalpages > 5:  start := page - 3 + 1  pages = make([]int, 5)  firstpage = page - 3  for i, _ := range pages {   pages[i] = start + i  }  firstpage = page - 1  lastpage = page + 1 default:  pages = make([]int, int(math.Min(5, float64(totalpages))))  for i, _ := range pages {   pages[i] = i + 1  }  firstpage = int(math.Max(float64(1), float64(page-1)))  lastpage = page + 1  //fmt.Println(pages) } paginatorMap := make(map[string]interface{}) paginatorMap["pages"] = pages paginatorMap["totalpages"] = totalpages paginatorMap["firstpage"] = firstpage paginatorMap["lastpage"] = lastpage paginatorMap["currpage"] = page return paginatorMap}

测试结果如下

func main(){ pageSize := 3  var rsCount int64 = 100 currentPage := 8 res := Paginator(currentPage,pageSize,rsCount) fmt.Println(res) }

运行结果如下

map[pages:[6 7 8 9 10] totalpages:34 firstpage:7 lastpage:9 currpage:8]

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对VEVB武林网的支持。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表