无法解码gob数据
我有一个我正在编码的简单结构类型。然而,我在解码数据时犯了一些根本错误。每次我试图解码它,我都会得到EOF恐慌错误 //将地图编码为gob。将gob保存到磁盘。从磁盘读取gob。将gob解码为另一张地图。 包干管无法解码gob数据,go,Go,我有一个我正在编码的简单结构类型。然而,我在解码数据时犯了一些根本错误。每次我试图解码它,我都会得到EOF恐慌错误 //将地图编码为gob。将gob保存到磁盘。从磁盘读取gob。将gob解码为另一张地图。 包干管 import ( "fmt" "encoding/gob" "bytes" "io/ioutil" ) type hashinfo struct { fname string hash string }
import (
"fmt"
"encoding/gob"
"bytes"
"io/ioutil"
)
type hashinfo struct {
fname string
hash string
}
func main() {
thing := []hashinfo{
{"rahul","test"},
{"boya","test2"},
}
m := new(bytes.Buffer)
enc := gob.NewEncoder(m)
enc.Encode(thing)
err := ioutil.WriteFile("gob_data", m.Bytes(), 0600)
if err != nil {
panic(err)
}
fmt.Printf("just saved gob with %v\n", thing)
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 := []hashinfo{}
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)
}
我创建了e:=[]hashinfo{}对象来解码gobject。我做错什么了吗?您在
类型hashinfo
中的字段未导出,无法反序列化。尝试使用Fname
和Hash
Ohh。顺便说一句,在struct中用大写字母分层的变量是如何处理的。它们被导出(在包外可见)。通过围棋之旅,阅读有效围棋并查看规范。