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

时间:2016-01-06 06:04:43

标签: struct go pagination revel

我有一个需要在视图端分页的结构数组。

这就是我的代码在视图中的样子:

>>> a = MyString("Hello")
>>> b = MyString(" World!")
>>> c = a+b
>>> c.string
'Hello World!'
>>> 

我一直在尝试寻找分页的解决方案,因为结果数以百计。到目前为止我遇到的唯一golang解决方案是SQL相关的。我非常感谢结构数组的解决方案。

提前谢谢。

编辑我的后端存储是BoltDB。我通过调用此方法获取控制器上的数据

<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>

这个数组是我想在视图上迭代的。

1 个答案:

答案 0 :(得分:1)

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

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()]
}

虽然你会得到你想要的行为,但是如果你的数据阵列很大,这在内存方面是非常浪费的。 希望这会有所帮助。