Golang slice/array implements pagination

package main

import (
	"fmt"
	"math"
)

func main() {
    
    
	data := []string{
    
    "a", "b", "c", "d", "e"} // 数组

	size := 10
	page := 1

	start, end := SlicePage(page, size, len(data))
	pageData := data[start:end]
	fmt.Println(pageData)
}

func SlicePage(page, pageSize, nums int) (sliceStart, sliceEnd int) {
    
    
	if page <= 0 {
    
    
		page = 1 //设置默认页码
	}
	if pageSize < 0 {
    
    
		pageSize = 10 //设置一页默认显示的记录数
	}

	//总页数
	pageCount := int(math.Ceil(float64(nums) / float64(pageSize)))
	//处理 当前页码>总页数
	if page > pageCount {
    
    
		return 0, 0
	}
	//处理 一页默认显示的记录数>总记录数
	if pageSize > nums {
    
    
		return 0, nums
	}
	sliceStart = (page - 1) * pageSize
	sliceEnd = sliceStart + pageSize

	if sliceEnd > nums {
    
    
		sliceEnd = nums
	}
	return sliceStart, sliceEnd
}

Guess you like

Origin blog.csdn.net/SweetHeartHuaZai/article/details/132423278