网络编程
位置:首页>> 网络编程>> Go语言>> golang实现分页算法实例代码

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

0
投稿

猜你喜欢

  • 前言突然想起来之前讲SQL注入时忘记讲一下这个宽字节注入了,因为这个知识点还是挺重要的,所以本文就带大家了解一下宽字节注入的原理以及应用方法
  • 这个验证类的完成有很长时间了,一直没有分享给大家使用了这么长时间之后感觉挺顺手,用于一些不需要特殊效果的表单验证个人认为已经足够了,还是挺好
  • 与前面一样我们会用fso来对文件或文件夹进行创建与删除操作了,其实fso有强大的功能但非常危险的哦,下面我们不来看看删除实例吧,在这些例子,
  • 我的工作内容可以说是五花八门,策划、文案、设计(包括平面设计、网站设计、VIS设计)、前端代码、交互、测试、摄影、项目管理等。所有这些工作最
  • 导语在设计论坛之前的讨论中曾经谈到过“设计师应该抓住这个时代的情感”,这是设计师的设计嗅觉和职业特性的体现,那么在纷纷扰扰中“裂变”的Web
  • 1.若有疑问立即检测 在出错时若能对原始代码做简单检测可以省去很多头痛问题。W3C对于XHTML与CSS 都有检测工具可用,请见 http:
  • 前几天,为了增强本站的SEO,着手把另一个域名:www.aspxhome.com下的所有页面301转向到www.cidianwang.com
  • javascript上下滑动广告效果 参数说明:客服果果(           
  • 在我们关于SQL服务器安全系列的这文章里,我们的目标是向你提供安全安装SQL服务器所需要的工具和信心,这样的话,你有价值的数据就会受到保护,
  • 最近看到N多介绍CSS框架,前些天我说过一句话:“在我有限的视野里,还没见到可以真正可以称得上css框架的东东~”,当然也可能是我的视野太小
  • 类型主要针对文本属性进行定义。理解“编辑字体列表”和“行高”。二、CSS规则定义之“背景”·背景有背景颜色和背景图像的选择设置。·利于背景图
  • Oracle物理结构故障是指构成数据库的各个物理文件损坏而导致的各种数据库故障。这些故障可能是由于硬件故障造成的,也可能是人为误操作而引起。
  • WEB标准,从我大二开始接触到毕业后的第一份工作“页面重构工程师”,从接触标准到蓝色理想标准区版主的四年多时间里,WEB标准已经成为我生活中
  • 最近写一个小小的留言本;算是对AJAX的综合应用迈出了一小步在制作过程中有很多兴奋的体验 虽然和以前的制作方法比起来繁杂了一些但是整个页面的
  • 和数据库打交道要频繁地用到SQL语句,除非你是全部用控件绑定的方式,但采用控件绑定的方式存在着灵活性差、效率低、功能弱等等缺点。因此,大多数
  • 这是一篇知识性的文档,主要目的是为了让Web缓存相关概念更容易被开发者理解并应用于实际的应用环境中。为了简要起见,某些实现方面的细节被简化或
  • strConnString = "driver={MySQL ODBC 3.51 
  • 对于熟悉 C/C++ 或 Java 语言的工程师来说,JavaScript 显得灵活,简单易懂,对代码的格式的要求也相对松散。很容易学习,并
  • 这几天研究UTF-8编码,太晕了,把我的看法和各位讨论讨论。欢迎来批啊。以下都是我的想法,哪里有不对的请不吝赐教,帮忙指出来。相关的题外话:
  • 从MySQL 5.0.2开始,通过mysql_stmt_attr_set() C API函数实现了服务器端光标。服务器端光标允许在服务器端生
手机版 网络编程 asp之家 www.aspxhome.com