gitea

Зеркало из https://github.com/go-gitea/gitea
Форк
0
/
paginate.go 
33 строки · 727.0 Байт
1
// Copyright 2021 The Gitea Authors. All rights reserved.
2
// SPDX-License-Identifier: MIT
3

4
package util
5

6
import "reflect"
7

8
// PaginateSlice cut a slice as per pagination options
9
// if page = 0 it do not paginate
10
func PaginateSlice(list any, page, pageSize int) any {
11
	if page <= 0 || pageSize <= 0 {
12
		return list
13
	}
14
	if reflect.TypeOf(list).Kind() != reflect.Slice {
15
		return list
16
	}
17

18
	listValue := reflect.ValueOf(list)
19

20
	page--
21

22
	if page*pageSize >= listValue.Len() {
23
		return listValue.Slice(listValue.Len(), listValue.Len()).Interface()
24
	}
25

26
	listValue = listValue.Slice(page*pageSize, listValue.Len())
27

28
	if listValue.Len() > pageSize {
29
		return listValue.Slice(0, pageSize).Interface()
30
	}
31

32
	return listValue.Interface()
33
}
34

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.