gpt4 book ai didi

go - 在 Go 中显示分页小部件

转载 作者:数据小太阳 更新时间:2023-10-29 03:08:56 26 4
gpt4 key购买 nike

我在 Go 中使用 HTML 模板来呈现分页小部件。我试图从这里开始学习如何做的例子:https://www.solodev.com/blog/web-design/adding-pagination-to-your-website.stml

到目前为止,这是我的代码:

// Item size like call 2 item from database
var pagesize = 2
var PaginationSize int = 6
var isActive string
Pagination := make([]int, PaginationSize)

for i := 0; i < PaginationSize; i++ {
if RequestPageNumber <= page {
Pagination[i] = i + 1
} else {
Pagination[i] = RequestPageNumber + i
}

if i == 0 {
isActive = " active"
} else {
isActive = ""
}
Info.Pagination += template.HTML(
fmt.Sprintf(`<li class="page-item%s"><a class="page-link" href=?id=%v>%v</a></li>`,
isActive, RequestPageNumber+i, RequestPageNumber+i))
}

我想改进这一点,方法是仅当事件页面变为 PaginationSize 的倍数时才更新分页列表。比如当显示的分页显示

(1), 2, 3, 4, 5, 6

如果用户点击2,我想看

1, (2), 3, 4, 5, 6

但是我当前的代码显示

(2), 3, 4, 5, 6, 7

页面前进到 6 之后,页面列表应该如下所示

7, 8, 9, 10, 11, 12 ,13 ,14

包装在这个分页 View 中的数据可能在数据库中,所以如果可能的话,我也很感激关于如何使它与数据库一起工作的提示。

谢谢。

最佳答案

检查下一个解决方案

package main

import (
"fmt"
)

const PSIZE = 5

func pager(pageNo int) {
var start int = pageNo/(PSIZE-1)*(PSIZE-1) + 1
if pageNo%(PSIZE-1) == 0 {
start -= PSIZE - 1
}

for i := start; i < start+PSIZE; i++ {
if i == pageNo {
fmt.Printf("(%d) ", i)
} else {
fmt.Printf("%d ", i)
}
}
fmt.Print("\n")
}

func main() {
pager(4)
pager(8)
pager(9)
}

输出

1 2 3 (4) 5 
5 6 7 (8) 9
(9) 10 11 12 13

https://play.golang.org/p/rFslGe2OE0k

关于go - 在 Go 中显示分页小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55816187/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com