golng切片实现分页

前言

实现切片分页,主要是根据选择页码和每页显示数量,计算了切片的开始、结束索引地址

复制代码
package main

import "math"

func main() {
	slice1 := []int{1, 2, 3, 4, 5, 6, 7}

	sliceStart, sliceEnd := SlicePage(2, 10, len(slice1))
	fmt.Println(slice1[sliceStart:sliceEnd])
}

// @Summary 切片分页
// @Param page 当前页
// @Param pageSize 每页显示数量
// @Param nums 数据总数
// @return sliceStart 切片开始
// @return sliceEnd 切片结尾
func SlicePage(page, pageSize, nums int) (sliceStart, sliceEnd int) {
	if page < 0 {
		page = 1
	}

	if pageSize < 0 {
		pageSize = 20
	}

	if pageSize > nums {
		return 0, nums
	}

	// 总页数
	pageCount := int(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
}

go 总结常用函数

posted @   牛奔  阅读(1494)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
历史上的今天:
2019-04-16 yii2 redirect重定向
2019-04-16 nvaicat mysql ssh 跳板机(堡垒机???)连接服务器
2019-04-16 面试题
点击右上角即可分享
微信分享提示