<textarea id="append-test" style="display:none;">```go //分页方法,根据传递过来的页数,每页数,总数,返回分页的内容 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 &gt; totalpages { page = totalpages } if page &lt;= 0 { page = 1 } var pages []int switch { case page &gt;= totalpages-5 &amp;&amp; totalpages &gt; 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 &gt;= 3 &amp;&amp; totalpages &gt; 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 } ``` **测试结果如下** ```go func main(){ pageSize := 3 var rsCount int64 = 100 currentPage := 8 res := Paginator(currentPage,pageSize,rsCount) fmt.Println(res) } ``` **运行结果如下** ```go map[pages:[6 7 8 9 10] totalpages:34 firstpage:7 lastpage:9 currpage:8] ```</textarea>
到此这篇关于“golang实现分页算法”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
golang实现分页算法
数据结构和算法(Golang实现)(10)基础知识-算法复杂度主方法
golang runtime 简析
Go实战--golang中各种排序算法实现以及生成随机数
Golang笔记:语法,并发思想,web开发,Go微服务相关
提速 72 倍,在 Python 里面调用 Golang 函数
想系统学习GO语言(Golang
为什么要学 Go
Golang 限流器的使用和实现
Golang中的垃圾回收算法