无法解码gob数据

无法解码gob数据,go,Go,我有一个我正在编码的简单结构类型。然而,我在解码数据时犯了一些根本错误。每次我试图解码它,我都会得到EOF恐慌错误 //将地图编码为gob。将gob保存到磁盘。从磁盘读取gob。将gob解码为另一张地图。 包干管 import ( "fmt" "encoding/gob" "bytes" "io/ioutil" ) type hashinfo struct { fname string hash string }

我有一个我正在编码的简单结构类型。然而,我在解码数据时犯了一些根本错误。每次我试图解码它,我都会得到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。我做错什么了吗?

您在
类型hashinfo
中的字段未导出,无法反序列化。尝试使用
Fname
Hash

Ohh。顺便说一句,在struct中用大写字母分层的变量是如何处理的。它们被导出(在包外可见)。通过围棋之旅,阅读有效围棋并查看规范。