Pager is a library which you can use for the purpose of generating and rendering pagination links.
$ go get github.com/mahendrakalkura/pager
Step 1: Initialize the pager.
import (
"github.com/mahendrakalkura/pager"
)
// ...total number of records under consideration
count := 100
// ...number of records per page
limit := 10
// ...current page number
number := 1
// ...size of the sliding window of page numbers
// (on either side of the current page)
numbers := 3
// ...URL syntax
// (%d will be replaced with the page number in context)
url := "/%d/"
p = pager.NewPager(count, limit, number, numbers, url)
Step 2: Use it in your view.
query := "SELECT * FROM ... WHERE ... ORDER BY ... LIMIT %d OFFSET %d"
query = fmt.Sprintf(query, p.Records.Limit, p.Records.Offset)
Step 3: Use it in your template.
<div>
<p class="pagination pull-right">
Showing {{ $.p.Records.From }} to {{ $.p.Records.To }} of {{ $.p.Records.Total }}
records
</p>
<ul class="pagination">
<li {{ if eq $.p.Pages.Number 1 }}class="disabled"{{ end }}>
<a href="{{ $.p.GetURL $.p.Pages.First }}">
<span>«</span>
</a>
</li>
<li {{ if eq $.p.Pages.Number $.p.Pages.Previous }}class="disabled"{{ end }}>
<a href="{{ $.p.GetURL $.p.Pages.Previous }}">
<span><</span>
</a>
</li>
{{ range $.p.Pages.Numbers }}
<li {{ if eq $.p.Pages.Number . }}class="disabled"{{ end }}>
<a href="{{ $.p.GetURL . }}">
<span>{{ . }}</span>
</a>
</li>
{{ end }}
<li {{ if eq $.p.Pages.Number $.p.Pages.Next }}class="disabled"{{ end }}>
<a href="{{ $.p.GetURL $.p.Pages.Next }}">
<span>></span>
</a>
</li>
<li {{ if eq $.p.Pages.Number $.p.Pages.Last }}class="disabled"{{ end }}>
<a href="{{ $.p.GetURL $.p.Pages.Last }}">
<span>»</span>
</a>
</li>
</ul>
</div>