1 回答

TA貢獻1830條經驗 獲得超9個贊
從encoding/gobGo 值生成二進制數據。結果不適用于文本表示,因此您不應將其視為string,而應將其視為一系列字節,例如[]byte.
也就是說,如果您必須獲取編碼數據Buffer.String(),請不要使用。Buffer.Bytes()
string這是一個使用 對值進行編碼和解碼的示例encoding/gob:
// ENCODE
var network bytes.Buffer
encoder := gob.NewEncoder(&network)
valueToEncode := "Hello, 世界"
if err := encoder.Encode(valueToEncode); err != nil {
panic(err)
}
gobData := network.Bytes() // Save / serialize this byte slice
// DECODE
network2 := bytes.NewBuffer(gobData)
decoder := gob.NewDecoder(network2)
var decoded string
if err := decoder.Decode(&decoded); err != nil {
panic(err)
}
fmt.PrintTln(decoded)
輸出(在Go Playground上試試):
Hello, 世界
另請注意,如果您打算將編碼數據寫入網絡連接或文件,則不需要bytes.Buffer,您可以直接對其進行編碼。如果必須使用bytes.Buffer,也可以使用它的Buffer.WriteTo()方法將其內容寫入一個io.Writer(如文件或網絡連接)。
- 1 回答
- 0 關注
- 126 瀏覽
添加回答
舉報