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
  • asp之家 网络编程 m.aspxhome.com