【发布时间】:2022-10-08 03:11:30
【问题描述】:
当我遇到关于 gob Serialize 的问题时,我正在尝试构建一个区块链项目。 我有一个使用 elliptic.P256() 曲线结构的 struct Wallet,当我尝试序列化 Wallet 时,出现了没有导出字段的错误。
真的希望得到一些帮助。
有我的代码。
const walletFile = "Wallets.dat"
type Wallets struct {
WalletsMap map[string]*Wallet
}
type Wallet struct {
PrivateKey ecdsa.PrivateKey
PublicKey []byte
}
func (w *Wallets) SaveWallets() {
var content bytes.Buffer
gob.Register(elliptic.P256())
encoder := gob.NewEncoder(&content)
err := encoder.Encode(&w)
if err != nil {
log.Panic(err)
}
err = ioutil.WriteFile(walletFile, content.Bytes(), 0644)
if err != nil {
log.Panic(err)
}
}
func NewWallets() (*Wallets, error) {
if _, err := os.Stat(walletFile); os.IsNotExist(err) {
wallets := &Wallets{}
wallets.WalletsMap = make(map[string]*Wallet)
return wallets, err
}
fileContent, err := ioutil.ReadFile(walletFile)
if err != nil {
log.Panic(err)
}
var wallets Wallets
gob.Register(elliptic.P256())
decoder := gob.NewDecoder(bytes.NewReader(fileContent))
err = decoder.Decode(&wallets)
if err != nil {
log.Panic(err)
}
return &wallets, nil
}
问题
2022/09/18 19:42:33 gob: type elliptic.p256Curve has no exported fields
panic: gob: type elliptic.p256Curve has no exported fields
【问题讨论】:
-
您可以导出
elliptic.p256Curve的字段或编写自定义函数编码/解码elliptic.p256Curve -
谢谢!我实际上正在尝试找到一种更简单的方法,但这很困难。我会尝试导出这些字段。
标签: go elliptic-curve gob