package grmi import ( "strconv" ) const ( PageSize = "pageSize" PageNumber = "pageNumber" ) type Paging struct { Number int64 Size int64 } func NewPaging() *Paging { return &Paging{Number: 1, Size: 10} } func (self *Paging) Offset() int64 { return (self.Number - 1) * self.Size } func (self *Paging) Fill(urlParameters map[string]string) bool { size, hasSzie := getPageSize(urlParameters) number, hasNumber := getPageIndex(urlParameters) if hasSzie || hasNumber { self.Size = size self.Number = number return true } return false } func getValue(urlParameters map[string]string, name string, defaultValue int64) (int64, bool) { if urlParameter, ok := urlParameters[name]; ok { value, err := strconv.ParseInt(urlParameter, 10, 64) if err == nil { return value, true } } return defaultValue, false } func getPageIndex(urlParameters map[string]string) (int64, bool) { return getValue(urlParameters, PageNumber, 1) } func getPageSize(urlParameters map[string]string) (int64, bool) { return getValue(urlParameters, PageSize, 10) }