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