1.前文回顾

 ​数据库分页​

上篇文章讲解到通过数据库的sql查出来的数据就是已经分页好的。

#yyds干货盘点#golang内存分页源码解析_数据库分页

是通过sql后面加的limit跟offset字段来进行分页,这篇文章讲解,已经查出来的list怎么实现内存分页呢。

2.前端参数

#yyds干货盘点#golang内存分页源码解析_sql_02

默认从第一页开始查询。

3.分页调用

#yyds干货盘点#golang内存分页源码解析_sql_03

如果没传参数,都使用默认值。

#yyds干货盘点#golang内存分页源码解析_sql_04

4.分页源码


          
          
func ( p * Pagination) GetValidPagination( total int) ( startIndex, endIndex int) {

// no pagination
if p . Limit == NoPagination . Limit {
return 0, total
}

// out of range
if p . Limit < 0 || p . Offset < 0 || p . Offset > total {
return 0, 0
}

startIndex = p . Offset
endIndex = startIndex + p . Limit

if endIndex > total {
endIndex = total
}

return startIndex, endIndex
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.

5.源码解析

#yyds干货盘点#golang内存分页源码解析_数据库分页_05

如果不传煤业的大小,默认不分页,

#yyds干货盘点#golang内存分页源码解析_分页_06

最后一页超出范围,只显示到最后一条

#yyds干货盘点#golang内存分页源码解析_数据库分页_07

解析url的相关参数。

#yyds干货盘点#golang内存分页源码解析_sql_08

offset的值是通过参数解解析处理的。

6.前端效果图

#yyds干货盘点#golang内存分页源码解析_数据库分页_09

是不是看了这篇文章,发现分页如此的简单。

如果这篇文章帮到了你,希望你可以帮小编投投票,47号峰啊疯了,投完可以抽奖哦

 https://blog.51cto.com/blog-contest/index#part4

#yyds干货盘点#golang内存分页源码解析_数据库分页_10

#yyds干货盘点#golang内存分页源码解析_分页_11