go - 无法解码 gob 数据

标签 go

我有一个正在编码的简单结构类型。但是,我在解码数据时犯了根本性的错误。每次我尝试对其进行解码时,都会出现 EOF panic 错误。

//将 map 编码为gob。将 gob 保存到磁盘。从磁盘读取 gob。将 gob 解码为另一张 map 。 包主

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)
}

为了解码 gobject,我创建了 e := []hashinfo{} 对象。我在那里做错了什么吗?

最佳答案

您在 type hashinfo 中的字段不会导出,也无法反序列化。尝试使用 FnameHash

关于go - 无法解码 gob 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20203257/

相关文章:

go - Docker 返回 "json: cannot unmarshal string into Go value of type []string"

go - Go 程序的主 goroutine 和派生 goroutine 之间的区别

go - Go 有自动生成吗?

go - 将嵌套结构编码为 JSON

go - Docopt - Golang - 如何访问重复的参数?

python - Golang的TLE(超过时间限制)错误,但使用类似逻辑的Python则没有。但为什么?

go - 是否有一种通用的方法来打印变量以进行调试?

go - 开始时遇到困难。 `package main` 引发运行时错误 - 索引超出范围?

json - 如何在 GO 中将换行符转换为正确的 JSON?

wordpress - 是否可以使用 Go 将现有的 CRD 添加到自定义 Kubernetes 运算符中?