分页是项目的一些关键点,每个语言都有它不同的写法,那么在golang中如何实现呢??
实现技巧:golang一般都把这种在项目常用到的都划分成工具函数,当你想用到的时候,直接调用工具函数就可以达到想要的效果。
实现代码:
package util
import (
"fmt"
"github.com/gin-gonic/gin"
"strconv"
)
// Pagination is page util
func Pagination(ctx *gin.Context) (pageStr string, num int, err error) {
limit := ctx.DefaultQuery("page_size", "8")
pageNumber := ctx.DefaultQuery("page_number", "1")
limitInt, err := strconv.Atoi(limit)
if err != nil || limitInt < 0 {
return "", 0, err
}
pageNumberInt, err := strconv.Atoi(pageNumber)
if err != nil || pageNumberInt < 0 {
return "", 0, err
}
if pageNumberInt != 0 {
pageNumberInt--
}
offsetInt := limitInt * pageNumberInt
pageStr = fmt.Sprintf(" limit %d offset %d", limitInt+1, offsetInt)
return pageStr, limitInt, nil
}
在用到时 直接调用即可。