Golang 切片/数组实现分页算法:
func SlicePage(page, pageSize, nums int64) (sliceStart, sliceEnd int64) {
if page <= 0 {
page = 1
}
if pageSize < 0 {
pageSize = 20 //设置一页默认显示的记录数
}
if pageSize > nums {
return 0, nums
}
// 总页数
pageCount := int64(math.Ceil(float64(nums) / float64(pageSize)))
if page > pageCount {
return 0, 0
}
sliceStart = (page - 1) * pageSize
sliceEnd = sliceStart + pageSize
if sliceEnd > nums {
sliceEnd = nums
}
return sliceStart, sliceEnd
}
测试:
func main() {
var data = []string{"qww", "dsassa", "1313", "jasdd", "dsawdqw"}
start, end := SlicePage(1, 3, int64(len(data))) //第一页1页显示3条数据
afterLimitData := data[start:end] //分页后的数据
fmt.Println("分页后的数据:", afterLimitData)
fmt.Println("数据总量:", len(data))
}
输出结果: