func (users *Users) Next() bool {
	if users.err != nil {
		return false
	}
	insta := users.inst
	endpoint := users.endpoint
	body, err := insta.sendRequest(
		&reqOptions{
			Endpoint: endpoint,
			Query: map[string]string{
				"max_id":             users.NextID,
				"ig_sig_key_version": goInstaSigKeyVersion,
				"rank_token":         insta.rankToken,
			},
		},
	)
	if err == nil {
		usrs := Users{}
		err = json.Unmarshal(body, &usrs)
		if err == nil {
			if len(usrs.RawNextID) > 0 && usrs.RawNextID[0] == '"' && usrs.RawNextID[len(usrs.RawNextID)-1] == '"' {
				if err := json.Unmarshal(usrs.RawNextID, &usrs.NextID); err != nil {
					users.err = err
					return false
				}
			} else {
				var nextID int64
				if err := json.Unmarshal(usrs.RawNextID, &nextID); err != nil {
					users.err = err
					return false
				}
				usrs.NextID = strconv.FormatInt(nextID, 10)
			}
			*users = usrs
			if !usrs.BigList || usrs.NextID == "" {
				users.err = ErrNoMore
			}
			users.inst = insta
			users.endpoint = endpoint
			users.setValues()
			return true
		}
	}
	users.err = err
	return false
}
Next allows to paginate after calling:
Account.Follow* and User.Follow*

New user list is stored inside Users

returns false when list reach the end.
package goinsta
import (
	"encoding/json"
	"errors"
	"fmt"
	"strconv"
)
type Users struct {
	inst *Instagram
	err      error
	endpoint string
	Status    string          `json:"status"`
	BigList   bool            `json:"big_list"`
	Users     []User          `json:"users"`
	PageSize  int             `json:"page_size"`
	RawNextID json.RawMessage `json:"next_max_id"`
	NextID    string          `json:"-"`
}
func newUsers(inst *Instagram) *Users {
	users := &Users{inst: inst}
	return users
}
func (users *Users) SetInstagram(inst *Instagram) {
	users.inst = inst
}
var ErrNoMore = errors.New("List end have been reached")