" />

最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

go語言制作分頁器實(shí)例探究

 更新時(shí)間:2024年01月04日 14:25:59   作者:pkg6  
這篇文章主要為大家介紹了go語言制作分頁器實(shí)例探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

Install

$ go get github.com/pkg6/go-paginate

Usage

package main
import (
    "encoding/json"
    "encoding/xml"
    "fmt"
    "github.com/pkg6/go-paginate"
    "github.com/pkg6/go-paginate/gormp"
    "gorm.io/driver/sqlite"
    "gorm.io/gorm"
    "gorm.io/gorm/logger"
)
type Post struct {
    ID     uint `gormp:"primarykey" json:"id"`
    Number int  `json:"number"`
}
type PostIndex struct {
    ID     uint `gormp:"primarykey" json:"id"`
    Number int  `json:"number"`
    Index  int  `json:"index"`
}
var db, _ = gorm.Open(sqlite.Open("gormp.db?cache=shared"), &gorm.Config{
    Logger: logger.Default.LogMode(logger.Info),
})
func init() {
    _ = db.AutoMigrate(&Post{})
    for i := 1; i <= 100; i++ {
        p := Post{
            Number: i,
        }
        db.Save(&p)
    }
}
func simple() {
    q := db.Model(Post{})
    var dest []Post
    var adapt = gormp.Adapter(q)
    myPage := paginate.SimplePaginate(adapt, 10, 1)
    _ = myPage.Get(&dest)
    //獲取最后頁碼
    page, err := myPage.GetLastPage()
    fmt.Println(fmt.Sprintf("獲取最后頁碼:%v", page))
    fmt.Println(fmt.Sprintf("獲取最后頁碼錯(cuò)誤信息:%v", err))
    //獲取總數(shù)
    total, err := myPage.GetTotal()
    fmt.Println(fmt.Sprintf("獲取總數(shù):%v", total))
    fmt.Println(fmt.Sprintf("獲取總數(shù)錯(cuò)誤信息:%v", err))
    fmt.Println(fmt.Sprintf("當(dāng)前頁碼:%v", myPage.GetCurrentPage()))
    fmt.Println(fmt.Sprintf("每頁顯示多少條數(shù):%v", myPage.GetListRows()))
    fmt.Println(fmt.Sprintf("是否還可以進(jìn)行分頁:%v", myPage.HasPages()))
    fmt.Println(dest)
}
func Total() {
    q := db.Model(Post{}).Where([]int64{20, 21, 22}).Order("id desc")
    var dest []Post
    var adapt = gormp.Adapter(q)
    t, _ := adapt.Length()
    myPage := paginate.TotalPaginate(adapt, 10, 1, t)
    _ = myPage.Get(&dest)
    var destIndex []PostIndex
    for i, post := range dest {
        destIndex = append(destIndex, PostIndex{ID: post.ID, Number: post.Number, Index: i})
    }
    // 先執(zhí)行當(dāng)get方法此時(shí)為nil data數(shù)據(jù)為dest
    // 不執(zhí)行g(shù)et方法 此時(shí)傳入dest,data就是dest
    // 執(zhí)行g(shù)et方法 此時(shí)在傳入新的結(jié)構(gòu)體 data 就是data
    // 不執(zhí)行g(shù)et 此時(shí)傳入nil 就返回nil
    r := myPage.Render(nil)
    jsonBytes, _ := json.Marshal(r)
    xmlBytes, err := xml.Marshal(r)
    fmt.Println(string(jsonBytes))
    fmt.Println(string(xmlBytes))
    //獲取最后頁碼
    page, err := myPage.GetLastPage()
    fmt.Println(fmt.Sprintf("獲取最后頁碼:%v", page))
    fmt.Println(fmt.Sprintf("獲取最后頁碼錯(cuò)誤信息:%v", err))
    //獲取總數(shù)
    total, err := myPage.GetTotal()
    fmt.Println(fmt.Sprintf("獲取總數(shù):%v", total))
    fmt.Println(fmt.Sprintf("獲取總數(shù)錯(cuò)誤信息:%v", err))
    fmt.Println(fmt.Sprintf("當(dāng)前頁碼:%v", myPage.GetCurrentPage()))
    fmt.Println(fmt.Sprintf("每頁顯示多少條數(shù):%v", myPage.GetListRows()))
    fmt.Println(fmt.Sprintf("是否還可以進(jìn)行分頁:%v", myPage.HasPages()))
    fmt.Println(dest)
}
func main() {
    Total()
    simple()
}

Get & Render method

GetRenderdata
Execute mandatory&data datanil&data
Execute mandatory&data dataTransfer dataTransfer data
Do not executenilnull
Do not executeTransfer dataGet method executed

Adapters

適配器必須實(shí)現(xiàn)具有兩種方法的“adapter”接口:

Length() (int64, error)
Slice(offset, length int64, dest any) error

GORM Adapter

var db, _ = gorm.Open(sqlite.Open("gorm.db?cache=shared"), &gorm.Config{
    Logger: logger.Default.LogMode(logger.Info),
})
q := db.Model(Post{}).Where([]int64{20, 21, 22}).Order("id desc")
var dest []Post
var adapt = gromp.Adapter(q)
t, _ := adapt.Length()
myPage := paginate.TotalPaginate(adapt, 10, 1, t)

XORM Adapter

var engine, _ = xorm.NewEngine("sqlite3", "xorm.db")
session := engine.Table(Post{})
var dest []Post
var adapt = xormp.Adapter(session)
total, _ := adapt.Length()
myPage := paginate.TotalPaginate(adapt, 10, 1, total)

Slice adapter

var source = []int{
    1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
    11, 22, 33, 44, 55, 66, 77, 88, 99, 199,
    111, 222, 333, 444, 555, 666, 777, 888, 999, 199,
    1111, 2222,
}
var adapt = slicep.Adapter(source)
myPage := paginate.SimplePaginate(adapt, 10, 5)

以上就是go語言制作分頁器實(shí)例探究的詳細(xì)內(nèi)容,更多關(guān)于go語言實(shí)現(xiàn)分頁器的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Go語言題解LeetCode1260二維網(wǎng)格遷移示例詳解

    Go語言題解LeetCode1260二維網(wǎng)格遷移示例詳解

    這篇文章主要為大家介紹了Go語言題解LeetCode1260二維網(wǎng)格遷移示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • golang 設(shè)置web請(qǐng)求狀態(tài)碼操作

    golang 設(shè)置web請(qǐng)求狀態(tài)碼操作

    這篇文章主要介紹了golang 設(shè)置web請(qǐng)求狀態(tài)碼操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Go構(gòu)建器模式構(gòu)建復(fù)雜對(duì)象方法實(shí)例

    Go構(gòu)建器模式構(gòu)建復(fù)雜對(duì)象方法實(shí)例

    本文介紹了構(gòu)建器模式,如何通過構(gòu)建器對(duì)象構(gòu)建復(fù)雜業(yè)務(wù)對(duì)象的方法實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • golang切片內(nèi)存應(yīng)用技巧詳解

    golang切片內(nèi)存應(yīng)用技巧詳解

    這篇文章主要介紹了golang切片內(nèi)存應(yīng)用技巧詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • Golang圖片驗(yàn)證碼的使用方法

    Golang圖片驗(yàn)證碼的使用方法

    最近在使用到Golang進(jìn)行原生開發(fā),注冊(cè)和登錄頁面都涉及到圖片驗(yàn)證碼的功能,支持很多類型的驗(yàn)證方式,例如支持?jǐn)?shù)字類型、字母類型、音頻驗(yàn)證碼、中文驗(yàn)證碼,本文給大家介紹Golang圖片驗(yàn)證碼的使用,感興趣的朋友跟隨小編一起看看吧
    2024-05-05
  • 使用Go語言實(shí)現(xiàn)benchmark解析器

    使用Go語言實(shí)現(xiàn)benchmark解析器

    這篇文章主要為大家詳細(xì)介紹了如何使用Go語言實(shí)現(xiàn)benchmark解析器并實(shí)現(xiàn)及Web UI 數(shù)據(jù)可視化,文中的示例代碼講解詳細(xì),需要的小伙伴可以參考一下
    2025-04-04
  • golang 各種排序大比拼實(shí)例

    golang 各種排序大比拼實(shí)例

    這篇文章主要介紹了golang 各種排序大比拼實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Go語言七篇入門教程一簡介初識(shí)

    Go語言七篇入門教程一簡介初識(shí)

    本篇是Go語言七篇入門系列第一篇Go語言初識(shí)及簡單介紹,從現(xiàn)在開始一起打開Go語言的學(xué)習(xí)大門吧,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-11-11
  • 用Go+Redis實(shí)現(xiàn)分布式鎖的示例代碼

    用Go+Redis實(shí)現(xiàn)分布式鎖的示例代碼

    在分布式的業(yè)務(wù)中 , 如果有的共享資源需要安全的被訪問和處理 , 那就需要分布式鎖,本文主要介紹了用Go+Redis實(shí)現(xiàn)分布式鎖的示例代碼,感興趣的可以了解一下
    2021-12-12
  • 手把手帶你走進(jìn)Go語言之語法基礎(chǔ)解析

    手把手帶你走進(jìn)Go語言之語法基礎(chǔ)解析

    這篇文章主要介紹了手把手帶你走進(jìn)Go語言之語法基礎(chǔ),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09

最新評(píng)論

陕西省| 呼玛县| 长岭县| 垦利县| 临潭县| 西林县| 庆阳市| 红安县| 武定县| 海口市| 榆林市| 富蕴县| 喀什市| 云安县| 永福县| 赤峰市| 景洪市| 米泉市| 米脂县| 荆门市| 榆社县| 成安县| 甘南县| 武隆县| 浏阳市| 天台县| 延边| 宝鸡市| 广德县| 易门县| 隆德县| 阿拉善盟| 东辽县| 库车县| 宁安市| 历史| 陆良县| 安徽省| 墨竹工卡县| 芦溪县| 桃江县|