Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Struct Golang Revel:为结构数组分页_Struct_Go_Pagination_Revel - Fatal编程技术网

Struct Golang Revel:为结构数组分页

Struct Golang Revel:为结构数组分页,struct,go,pagination,revel,Struct,Go,Pagination,Revel,我有一个需要在视图端分页的结构数组 这是我的代码在视图中的外观: <div class="tab-content"> <div class="tab-pane active" id="tab1" > <hr/> {{range .c}} <p>Number: {{.Number}}</p> <p&

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

这是我的代码在视图中的外观:

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

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

您可以收集从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()]
}
虽然您将获得所需的行为,但这在内存方面是非常浪费的,特别是如果您的数据阵列很大的话。
希望这有帮助。

如果您不希望实现基于SQL的解决方案(效率最高,灵活性最低)。您可以在javascript中计算并迭代结果集,也可以在revel控制器中进行相同的计算。你需要计算总页数=返回的行数/页面大小等。如果你想将筛选和分组结合起来,事情会变得有点复杂。另外,请告诉我们你使用的数据访问包。控制器是什么样子的?谢谢@performalcoder的快速响应。我已经更新了问题。我希望它涵盖了所有你要求的。我刚刚写了一些超级未经测试的代码,它应该给你一个可以做什么的提示。干杯如果你想让我调整答案,请告诉我。跳过值将是size*(pageneeded-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()]
}