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

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

Gob 解碼器返回 EOF 錯誤

Gob 解碼器返回 EOF 錯誤

Go
炎炎設計 2021-11-15 15:59:16
我正在嘗試實現(xiàn)一個基于接口的消息隊列,其中作業(yè)作為字節(jié)推送到 redis 隊列。但是在嘗試解碼字節(jié)流時,我不斷收到 EOF 錯誤。https://play.golang.org/p/l9TBvcn9qg有人能指出我正確的方向嗎?
查看完整描述

2 回答

?
慕少森

TA貢獻2019條經(jīng)驗 獲得超9個贊

從上面的馬克找到了問題的答案。我忘了做一個gob.Register(B{})

https://play.golang.org/p/7rQDHvMhD7


查看完整回答
反對 回復 2021-11-15
?
料青山看我應如是

TA貢獻1772條經(jīng)驗 獲得超8個贊

在您的 Go Playground 示例中,您嘗試對接口進行編碼,而接口沒有具體的實現(xiàn)。如果您從A結構中刪除接口,那應該可以。像下面這樣:


package main


import "fmt"

import "encoding/gob"

import "bytes"


type testInterface interface{}


type A struct {

  Name string

  Interface *B // note this change here

}


type B struct {

  Value string

}


func main() {

  var err error

  test := &A {

    Name: "wut",

    Interface: &B{Value: "BVALUE"},

  }

  buf := bytes.NewBuffer([]byte{})

  enc := gob.NewEncoder(buf)

  dec := gob.NewDecoder(buf)


  // added error checking as per Mark's comment

  err = enc.Encode(test)

  if err != nil {

    panic(err.Error())

  }


  result := &A{}

  err := dec.Decode(result)

  fmt.Printf("%+v\n", result)

  fmt.Println("Error is:", err)

  fmt.Println("Hello, playground")

}

此外,作為旁注,您將看到類似以下的某種輸出:&{Name:wut Interface:0x1040a5a0}因為A正在引用對B結構的引用。進一步清理:


type A struct{

  Name string

  Interface B // no longer a pointer

}


func main() {

   // ...

   test := &A{Name: "wut", Interface: B{Value: "BVALUE"}}

   // ...

}


查看完整回答
反對 回復 2021-11-15
  • 2 回答
  • 0 關注
  • 341 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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