亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

的編碼和解碼結構

的編碼和解碼結構

Go
HUH函數 2022-11-28 14:41:09
我正在嘗試編碼和解碼結構,我已經搜索了很多關于這個主題的很多問題通常是想要編碼基元或簡單結構的人。我想要的是編碼一個看起來像這樣的結構:    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。有沒有辦法獲得我想要的所有信息?
查看完整描述

1 回答

?
蕪湖不蕪

TA貢獻1796條經驗 獲得超7個贊

想象一下你的 struct ponts 到 /foo/bar/baz.txt 中的一個文件,然后序列化你的結構。您將它發送到另一臺計算機(可能在不同的操作系統中)并重新創建結構。你能指望什么?

如果在同一臺計算機上序列化、刪除文件(或更新內容)并重新創建結構會怎樣?

一種解決方案是存儲文件的內容。

另一種解決方案是存儲文件的路徑,當您反序列化結構時,您可以嘗試重新打開文件。您可以通過存儲內容、大小和其他元數據的哈希值來添加安全層,以檢查文件是否相同。

答案將指導您實現最佳實施


查看完整回答
反對 回復 2022-11-28
  • 1 回答
  • 0 關注
  • 128 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號