为了账号安全,请及时绑定邮箱和手机立即绑定

Golang Revel:对结构数组进行分页

Golang Revel:对结构数组进行分页

Go
达令说 2021-12-06 19:31:56
我有一个结构数组,我需要在视图端进行分页。这是我的代码在视图中的样子:<div class="tab-content">        <div class="tab-pane active" id="tab1" >          <hr/>          {{range .c}}                            <p>Number: {{.Number}}</p>            <p>Name: {{.Name}}</p>            <p>Parties: {{.A}} and {{.B}}</p>            <p>Location: {{.Location}}</p>          <a href="/search">Read More</a>          <hr/>          {{end}}          <div class="paging">            <ul class="pagination">              <li><a href="#"><i class="fa fa-angle-left"></i></a></li>              <li class="active"><a href="#">1</a></li>              <li><a href="#">2</a></li>              <li><a href="#">3</a></li>              <li><a href="#">4</a></li>              <li><a href="#">5</a></li>              <li><a href="#"><i class="fa fa-angle-right"></i></a></li>            </ul>          </div>        </div>我试图寻找解决方案来分页,因为结果有数百个。到目前为止,我遇到的唯一 golang 解决方案与 SQL 相关。我非常感谢结构数组的解决方案。先感谢您。编辑我的后端存储是 BoltDB。我通过调用此方法获取控制器上的数据func List(bucket string)  []Data{    //Open BoltDB database    Open()    defer Close()    //Use a predefined struct to make an array    d:=make([]Data, 0)    //Fetch and unmarshal data as it is saved in byte form    db.View(func(tx *bolt.Tx) error {        cur := tx.Bucket([]byte(bucket)).Cursor()        for k, v := cur.First(); k != nil; k, v = cur.Next() {                        d1:=Data{}            err:= json.Unmarshal(v, &d1)            if err !=nil{                return err            }            d=append(d, d1)        }         return nil      })    //Return the array of data    return d}这个数组是我想在视图上迭代的。
查看完整描述

1 回答

?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

您可以收集从 list 函数返回的完整数据数组。


func paginate(x []Data, skip int, size int) []int {

limit := func() int {

    if skip+size > len(x) {

        return len(x)

    } else {

        return skip + size

    }


}


start := func() int {

    if skip > len(x) {

        return len(x)

    } else {

        return skip

    }


}

  return x[start():limit()]

}

虽然你会得到你想要的行为,但这在内存方面是非常浪费的,特别是如果你的数据数组很大。希望这可以帮助。


查看完整回答
反对 回复 2021-12-06
  • 1 回答
  • 0 关注
  • 305 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信