本文主要給大家介紹了關(guān)于golang分頁(yè)算法的相關(guān)內(nèi)容,分享出來(lái)供大家參考學(xué)習(xí),下面話(huà)不多說(shuō)了,來(lái)一起看看詳細(xì)的介紹吧
//分頁(yè)方法,根據(jù)傳遞過(guò)來(lái)的頁(yè)數(shù),每頁(yè)數(shù),總數(shù),返回分頁(yè)的內(nèi)容 7個(gè)頁(yè)數(shù) 前 1,2,3,4,5 后 的格式返回,小于5頁(yè)返回具體頁(yè)數(shù)
func Paginator(page, prepage int, nums int64) map[string]interface{} {
var firstpage int //前一頁(yè)地址
var lastpage int //后一頁(yè)地址
//根據(jù)nums總數(shù),和prepage每頁(yè)數(shù)量 生成分頁(yè)總數(shù)
totalpages := int(math.Ceil(float64(nums) / float64(prepage))) //page總數(shù)
if page > totalpages {
page = totalpages
}
if page = 0 {
page = 1
}
var pages []int
switch {
case page >= totalpages-5 totalpages > 5: //最后5頁(yè)
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)
}
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。