我正在尝试编码和解码结构,我已经搜索了很多关于这个主题的很多问题通常是想要编码基元或简单结构的人。我想要的是编码一个看起来像这样的结构:
Name string
Id int
file *os.File
keys *ecdsa.PrivateKey
}
名称和 ID 没有问题,我可以使用 gob 或 json 编组对它们进行编码。但是,当我想使用 gob 对文件进行编码时gob.Register(os.File{}),由于文件结构中的字段是小写,我会收到一个错误,指出文件没有导出的字段。我会使用这样的功能
buf := bytes.Buffer{}
enc := gob.NewEncoder(&buf)
gob.Register(big.Int{})
...
err := enc.Encode(&p)
if err != nil {
log.Fatal(err)
}
fmt.Println("uncompressed size (bytes): ", len(buf.Bytes()))
return buf.Bytes()
}
我不确定在编码函数中注册是否正确,但是我必须注册所有被引用的结构以用于我要编码的一个特定结构,这似乎很奇怪。例如对于一个文件,我将不得不注册大量的接口,这似乎不是正确的方法。有没有一种简单的方法来编码和解码具有更多复杂性的结构。
如果我使用 json 编组来执行此操作,如果我使用指向另一个结构的指针,它将始终返回 nil。有没有办法获得我想要的所有信息?
芜湖不芜
相关分类