使用golang怎么實現(xiàn)一個分頁算法?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
創(chuàng)新互聯(lián)長期為上千客戶提供的網站建設服務,團隊從業(yè)經驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網生態(tài)環(huán)境。為晉中企業(yè)提供專業(yè)的網站建設、做網站,晉中網站改版等技術服務。擁有十年豐富建站經驗和眾多成功案例,為您定制開發(fā)。
示例代碼如下:
//分頁方法,根據(jù)傳遞過來的頁數(shù),每頁數(shù),總數(shù),返回分頁的內容 7個頁數(shù) 前 1,2,3,4,5 后 的格式返回,小于5頁返回具體頁數(shù) func Paginator(page, prepage int, nums int64) map[string]interface{} { var firstpage int //前一頁地址 var lastpage int //后一頁地址 //根據(jù)nums總數(shù),和prepage每頁數(shù)量 生成分頁總數(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頁 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]
關于使用golang怎么實現(xiàn)一個分頁算法問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關知識。