golang实现分页算法实例代码
作者:JimPang 发布时间:2023-07-09 20:50:51
标签:golang,分页,算法
前言
本文主要给大家介绍了关于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


猜你喜欢
- shp2sqlserver用法简析 官方说明: shp2sqlserver is a command line tool for loadi
- 1.file--->settings:2.搜索temlates,点击File and Code Templates,点击右侧的Pyth
- 本方法只做学习研究之用,不得用于商业用途若经济条件允许,请支持并购买正版,链接地址:https://www.jetbrains.com/py
- 因一些特殊需求需要以参数的形式获取字典 * 定的值,网上搜了一下并没有特别好的实现(并没有太认真去找~),所以自己实现了一个,以供大家参考:)
- 我们在使用bootstraptable做表格展示时,有时需要固定表格的高度当数据超出高度会出现滚动条,这时有可能出现表头列和数据列对不齐。出
- 今天给大家分享Listary v5.00.2843 2022年6月9日亲测可用注册码 ,是一款最新的激活码,有需要的朋友前来查看。Lista
- 代码如下# -*- coding:utf-8 -*-import cv2import numpy as npfrom tkinter imp
- 本文给出了本人在使用 Sublime Text 配置 Python 环境的记录。主要为了解决中文乱码的问题以及 Sublime Text 默
- 先看效果,实现一个图片左右摇动,在一般的H5宣传页,商家活动页面我们会看到这样的动画,小程序的动画效果不同于css3动画效果,是通过js来完
- 我们肯定都很熟悉商品购物车这一功能,每当我们在某宝某东上购买商品的时候,看中了哪件商品,就会加入购物车中,最后结算。购物车这一功能,方便消费
- 这篇论坛文章着重介绍了SQL Server数据库简体繁体数据混用的问题,详细内容请参考下文:我现在要说的是一个在简体繁体数据混用的时候很容易
- 1,flask中内置的过滤器模板中常用方法:{#过滤器调用方式{{变量|过滤器名称}} #} <!-- safe过滤器,可
- 在实际工作或面试中,我们经常会遇到“数组去重”问题,接下来就是使用js实现的数组去重的多种方法:1.将数组的每一个元素依次与其他元素做比较,
- 页面缓存e.g.@cache_page(time_out, key_prefix=key_prefix)def my_view(): ...
- github是一个项目的存储仓库,使用的时候非常的方便,下面就介绍一下管理 github 仓库的软件安装,windows 下的 git 安装
- 一、复制原理主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环。这些日志可以记录发送到从服务器的更新.当一个从服务器连接主
- TensorFlow里面的padding只有两个选项也就是valid和samepytorch里面的padding么有这两个选项,它是数字0,
- html5的webAPI接口可以很轻松的使用短短的几行代码就实现点击按钮复制区域文本的功能,不需要依赖flash。代码如下:/* 创建ran
- 介绍zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。ps. 如果各个迭代器的元
- 我们学习完推导式之后发现,推导式就是在容器中使用一个for循环而已,为什么没有元组推导式?原因就是“元组推导式&