golang实现分页算法实例代码
作者:JimPang 时间:2023-07-09 20:50:51
前言
本文主要给大家介绍了关于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]
来源:https://studygolang.com/articles/14755
标签:golang,分页,算法
0
投稿
猜你喜欢
六种酷炫Python运行进度条效果的实现代码
2022-06-07 05:22:16
Python matplotlib超详细教程实现图形绘制
2023-04-20 06:37:53
关于go-zero单体服务使用泛型简化注册Handler路由的问题
2023-08-30 20:19:08
手动实现vue2.0的双向数据绑定原理详解
2024-04-27 16:09:15
Access保留字和变量名列表
2007-10-15 12:43:00
pandas pd.read_csv()函数中parse_dates()参数的用法说明
2023-07-22 04:51:26
PyCharm更改字体和界面样式的方法步骤
2021-12-24 09:15:25
如何使用Python修改matplotlib.pyplot.colorbar的位置以对齐主图
2021-09-28 18:01:30
MySQL 自动清理binlog日志的方法
2024-01-17 11:37:59
详解MySQL的sql_mode查询与设置
2024-01-14 08:30:20
python 数据提取及拆分的实现代码
2023-11-13 09:13:12
Python基础之dict和set的使用详解
2022-01-16 04:15:08
详解Vue中Computed与watch的用法与区别
2023-07-02 17:05:24
在ASP编程中nothing代表什么意思?
2011-04-15 10:47:00
超全MySQL学习笔记
2024-01-25 20:21:45
使用Python第三方库pygame写个贪吃蛇小游戏
2021-05-19 11:08:37
Python Ajax爬虫案例分享
2023-09-01 19:24:35
PHP实现的线索二叉树及二叉树遍历方法详解
2023-11-13 11:28:06
python实现简单中文词频统计示例
2022-04-17 16:54:35
上手简单,功能强大的Python爬虫框架——feapder
2023-11-28 15:50:39