第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

Golang 切片結(jié)構(gòu)或新手在構(gòu)建 REST 時(shí)遇到麻煩

Golang 切片結(jié)構(gòu)或新手在構(gòu)建 REST 時(shí)遇到麻煩

Go
喵喵時(shí)光機(jī) 2021-10-18 16:53:27
并需要你的幫助。想構(gòu)建簡(jiǎn)單的 api 并遇到一些問(wèn)題。我選擇了帶有postgres 驅(qū)動(dòng)程序的gin和 database/sqlpackage mainimport (    "database/sql"    "fmt"    "github.com/gin-gonic/gin"    _ "github.com/lib/pq")func main() {    router := gin.Default()    router.GET("/search/:text", SearchWord)    router.Run(":8080")}我需要向 DB 查詢并根據(jù)此請(qǐng)求生成 json。func checkErr(err error) {    if err != nil {        panic(err)    }}type Message struct {    ticket_id int    `json:"ticket_id"`    event     string `json:"event"`}func SearchWord(c *gin.Context) {    word := c.Params.ByName("text")    db, err := sql.Open("postgres", "host=8.8.8.8 user= password= dbname=sample")    defer db.Close()    checkErr(err)    rows, err2 := db.Query("SELECT ticket_id,event FROM ....$1, word)    checkErr(err)    for rows.Next() {        var ticket_id int        var event string        err = rows.Scan(&ticket_id, &event)        checkErr(err)        fmt.Printf("%d | %s \n\n", ticket_id, event)    }}這個(gè)尾聲工作得很好,但是當(dāng)我需要制作 json. 我需要制作一行結(jié)構(gòu)type Message struct {    ticket_id int    `json:"ticket_id"`    event     string `json:"event"`}然后我需要?jiǎng)?chuàng)建 slice ,并附加每一行。 Next() 循環(huán)一個(gè)比用 Json 回答瀏覽器的答案...c.JSON(200, messages)但如何做到這一點(diǎn)......不知道:(
查看完整描述

2 回答

?
Smart貓小萌

TA貢獻(xiàn)1911條經(jīng)驗(yàn) 獲得超7個(gè)贊

免責(zé)聲明:我是全新的

由于您Scan將列數(shù)據(jù)輸入到變量中,因此您應(yīng)該能夠使用它們的值初始化結(jié)構(gòu):

m := &Message{ticket_id: ticket_id, event: event}

你可以初始化一個(gè)切片

s := make([]*Message, 0)

然后在實(shí)例化后附加每個(gè)消息結(jié)構(gòu):

s = append(s, m)


因?yàn)槲覍?duì) go 不太熟悉,所以有幾件事我不確定:

  • 將數(shù)據(jù)從查詢復(fù)制到您的變量后,使用rows.Scan初始化Message結(jié)構(gòu)是否按預(yù)期復(fù)制當(dāng)前迭代值?

  • 如果有一種方法可以從您的查詢中獲取總行數(shù),那么初始化靜態(tài)長(zhǎng)度數(shù)組而不是切片的性能可能會(huì)更高?

  • 我認(rèn)為@inf 刪除了關(guān)于將你Message的 json編組到 json 的答案可能需要解決,并且Message字段可能需要大寫

復(fù)制自@inf:

結(jié)構(gòu)成員的名稱需要大寫,以便它們被導(dǎo)出并可以被訪問(wèn)。

type Message struct {

    Ticket_id int    `json:"ticket_id"`

    Event     string `json:"event"` }


查看完整回答
反對(duì) 回復(fù) 2021-10-18
  • 2 回答
  • 0 關(guān)注
  • 182 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)