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

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

使用 gob 打包遞歸定義的結(jié)構(gòu)體

使用 gob 打包遞歸定義的結(jié)構(gòu)體

Go
慕桂英546537 2021-08-30 14:55:51
我主要使用 Python,但正在玩 Go。我寫了以下內(nèi)容來做一些在 python 中非常簡單的事情,我希望它也可以在 Go 中完成。package mainimport (    "bytes"    "encoding/gob"    "fmt"    "io/ioutil")type Order struct {    Text string    User *User}type User struct {    Text  string    Order *Order}func main() {    o := Order{}    u := User{}    o.Text = "order text"    u.Text = "user text"    // commenting this section prevents stack overflow    o.User = &u    u.Order = &o    fmt.Println("o.u.text:", o.User.Text, "u.o.text:", u.Order.Text)    // end section    m := new(bytes.Buffer)    enc := gob.NewEncoder(m)    enc.Encode(o)    err := ioutil.WriteFile("gob_data", m.Bytes(), 0600)    if err != nil {        panic(err)    }    fmt.Printf("just saved gob with %v\n", o)    n, err := ioutil.ReadFile("gob_data")    if err != nil {        fmt.Printf("cannot read file")        panic(err)    }    p := bytes.NewBuffer(n)    dec := gob.NewDecoder(p)    e := Order{}    err = dec.Decode(&e)    if err != nil {        fmt.Printf("cannot decode")        panic(err)    }    fmt.Printf("just read gob from file and it's showing: %v\n", e)}如您所見,有兩個(gè)自定義結(jié)構(gòu),每個(gè)都包含對另一個(gè)的引用,遞歸地。當(dāng)我嘗試使用 gob 將一個(gè)文件打包成一個(gè)文件時(shí),它會編譯,但出現(xiàn)堆棧溢出,我假設(shè)這是由遞歸引起的。根據(jù)我的經(jīng)驗(yàn),pickle 可以毫不費(fèi)力地處理這樣的事情。我究竟做錯(cuò)了什么?
查看完整描述

1 回答

?
慕沐林林

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

截至目前,該encoding/gob不適用于遞歸值:

遞歸類型工作正常,但遞歸值(帶循環(huán)的數(shù)據(jù))有問題。這可能會改變。

在更改之前,您必須要么不使用循環(huán)數(shù)據(jù),要么使用不同的序列化方法。


查看完整回答
反對 回復(fù) 2021-08-30
  • 1 回答
  • 0 關(guān)注
  • 166 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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