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

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

gob 解碼器只返回?cái)?shù)組中的第一個(gè)元素

gob 解碼器只返回?cái)?shù)組中的第一個(gè)元素

Go
萬(wàn)千封印 2022-11-28 17:02:39
所以我試圖創(chuàng)建一個(gè)模擬數(shù)據(jù)庫(kù),在當(dāng)前的實(shí)現(xiàn)中,我試圖創(chuàng)建一個(gè)插入行并insert返回它們。我決定使用 a來(lái)幫助維護(hù)一個(gè)內(nèi)存塊,我可以在其中插入一行行,并在調(diào)用時(shí)反序列化該內(nèi)存塊,但它似乎只返回第一行而不是傳遞給數(shù)組的所有行。selectselectbytes.Bufferselectselect主程序func main() {    inputBuffer := compiler.NewInputBuffer()    scanner := bufio.NewScanner(os.Stdin)    for {        PrintPrompt()        scanner.Scan()        command := scanner.Text()        inputBuffer.Buffer = command        if strings.HasPrefix(inputBuffer.Buffer, ".") {            switch compiler.DoMetaCommand(inputBuffer) {            case compiler.MetaCommandSuccess:                continue            case compiler.MetaCommandUnrecognizedCommand:                fmt.Printf("Unrecognized command %q \n", inputBuffer.Buffer)                continue            }        }        var statement compiler.Statement        switch compiler.PrepareStatement(inputBuffer, &statement) {        case compiler.PrepareSuccess:        case compiler.PrepareUnrecognizedStatement:            fmt.Printf("Unrecognized command at start of %q \n", inputBuffer.Buffer)            continue        case compiler.PrepareSyntaxError:            fmt.Println("Syntax error. Could not parse statement.")            continue        }        compiler.ExecuteStatement(statement)        fmt.Println("Executed")    }}func PrintPrompt() {    fmt.Printf("db > ")}上面的代碼用于解析條目并將其附加到語(yǔ)句中,并且根據(jù)關(guān)鍵字,它是一個(gè)insert或select[取出用于定義枚舉的代碼并保留核心邏輯]func SerializeRow(r []Row) {    encoder := gob.NewEncoder(&RowsTableBuffer)    err := encoder.Encode(r)    if err != nil {        log.Println("encode error:", err)    }}所以上面的代碼使用了一個(gè)全局變量,buffer在這個(gè)全局變量中,slice附加到 in 的PrepareStatement()內(nèi)容將在 an 完成后進(jìn)行編碼insert。Aselect應(yīng)該返回所有行的切片,但出于某種原因只返回第一個(gè)元素。示例(在終端中):如果我插入 2 個(gè): db > insert 1 john c@mail.com db > insert 2 collins k@mail.com然后我做了一個(gè)選擇: select =>它只返回[{1 john c@mail.com}]。我在這里缺少什么嗎?謝謝你的支持。
查看完整描述

1 回答

?
慕沐林林

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

所以答案很簡(jiǎn)單。encoder我們?cè)诤瘮?shù)中創(chuàng)建一個(gè)新的SerializeRow而不是創(chuàng)建一次。我們把它從函數(shù)中拉出來(lái)并創(chuàng)建了一個(gè)全局的。


var (

    encoder = gob.NewEncoder(&RowsTableBuffer)

    decoder = gob.NewDecoder(&RowsTableBuffer)

)


func SerializeRow(r Row) {

    err := encoder.Encode(r)

    if err != nil {

        log.Println("encode error:", err)

    }


}


func DeserializeRow() {


    var rows Row


    err := decoder.Decode(&rows)


    for err == nil {

        if err != nil {

            log.Fatal("decode error:", err)

        }

        fmt.Printf("%d %s %s\n", rows.ID, rows.Username, rows.Email)

        err = decoder.Decode(&rows)


    }


}


查看完整回答
反對(duì) 回復(fù) 2022-11-28
  • 1 回答
  • 0 關(guān)注
  • 112 瀏覽
慕課專欄
更多

添加回答

舉報(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)