我有一个简单的结构类型,我正在编码。但是,在解码数据时,我正在做一些根本错误的事情。每次我尝试解码时,都会出现EOF恐慌错误。
//将地图编码为gob。将gob保存到磁盘。从磁盘读取gob。将gob解码为另一个地图。 包主要
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。我在那里做错了吗?
答案 0 :(得分:3)
type hashinfo
中的字段未导出,无法反序列化。尝试使用Fname
和Hash
。