mirror of
https://github.com/unti-io/go-utils.git
synced 2025-10-17 22:00:37 +08:00
[v1.6.2] 新增 ArrayPaging 数组分页
This commit is contained in:
12
utils/app.go
12
utils/app.go
@@ -1,15 +1,16 @@
|
|||||||
package utils
|
package utils
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
In.Array = InArray[any]
|
In.Array = InArray[any]
|
||||||
Array.Diff = ArrayDiff[any]
|
Array.Diff = ArrayDiff[any]
|
||||||
Array.Intersect = ArrayIntersect[any]
|
Array.Intersect = ArrayIntersect[any]
|
||||||
Array.Filter = ArrayFilter
|
Array.Filter = ArrayFilter
|
||||||
Array.Remove = ArrayRemove
|
Array.Remove = ArrayRemove
|
||||||
Array.Unique = ArrayUnique[any]
|
Array.Unique = ArrayUnique[any]
|
||||||
Array.Empty = ArrayEmpty[any]
|
Array.Empty = ArrayEmpty[any]
|
||||||
Array.Reverse = ArrayReverse[any]
|
Array.Reverse = ArrayReverse[any]
|
||||||
Array.MapWithField = ArrayMapWithField
|
Array.MapWithField = ArrayMapWithField
|
||||||
|
Array.Paging = ArrayPaging[any]
|
||||||
Map.WithField = MapWithField[map[string]any]
|
Map.WithField = MapWithField[map[string]any]
|
||||||
Map.WithoutField = MapWithoutField[map[string]any]
|
Map.WithoutField = MapWithoutField[map[string]any]
|
||||||
Map.ToURL = MapToURL
|
Map.ToURL = MapToURL
|
||||||
@@ -31,6 +32,7 @@ var Array struct {
|
|||||||
Empty func(array []any) (slice []any)
|
Empty func(array []any) (slice []any)
|
||||||
Reverse func(array []any) (slice []any)
|
Reverse func(array []any) (slice []any)
|
||||||
MapWithField func(array []map[string]any, field any) (slice []any)
|
MapWithField func(array []map[string]any, field any) (slice []any)
|
||||||
|
Paging func(rows []any, page, limit int) (code int, count int, data []any)
|
||||||
}
|
}
|
||||||
|
|
||||||
var Map struct {
|
var Map struct {
|
||||||
|
@@ -97,4 +97,37 @@ func ArrayIntersect[T any](array1, array2 []T) (slice []T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
return slice
|
return slice
|
||||||
|
}
|
||||||
|
|
||||||
|
// ArrayPaging - 分页处理
|
||||||
|
func ArrayPaging[T any](rows []T, page, limit int) (code int, count int, data []T) {
|
||||||
|
|
||||||
|
// 获取数据的总长度
|
||||||
|
count = len(rows)
|
||||||
|
|
||||||
|
// 计算总页数
|
||||||
|
if count == 0 || limit <= 0 {
|
||||||
|
code = 0
|
||||||
|
} else {
|
||||||
|
code = (count + limit - 1) / limit
|
||||||
|
}
|
||||||
|
|
||||||
|
// 检查页码是否有效
|
||||||
|
if page < 1 {
|
||||||
|
page = 1
|
||||||
|
}
|
||||||
|
if page > code {
|
||||||
|
// 如果页码超过总页数,返回空数据
|
||||||
|
return code, count, []T{}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 计算当前页数据的起始和结束索引
|
||||||
|
start := (page - 1) * limit
|
||||||
|
end := start + limit
|
||||||
|
if end > count { end = count }
|
||||||
|
|
||||||
|
// 截取当前页的数据
|
||||||
|
data = rows[start:end]
|
||||||
|
|
||||||
|
return code, count, data
|
||||||
}
|
}
|
Reference in New Issue
Block a user