如何使用 gob 编码将结构编码为字节切片并将字节切片解码回原始结构?

How to encode struct to byte slice and decode byte slice back to original struct using gob encoding?

我正在尝试将 go struct 编组为字节(通过 gob 编码),然后将这些字节解编回原始对象。我得到了意外的结果(对象没有得到正确的值)。请帮我改正程序。

输入:

package main

import (
    "bytes"
    "encoding/gob"
    "fmt"
)

type object struct {
    name string
    age  int
}

func main() {
    inputObject := object{age: 22, name: "Zloy"}
    fmt.Println(inputObject)

    var inputBuffer bytes.Buffer
    gob.NewEncoder(&inputBuffer).Encode(inputObject)
    fmt.Println(inputBuffer)

    destBytes := inputBuffer.Bytes()
    fmt.Println("\n", destBytes, "\n")

    var outputBuffer bytes.Buffer
    outputBuffer.Write(destBytes)
    fmt.Println(outputBuffer)

    var outputObject object
    gob.NewDecoder(&outputBuffer).Decode(&outputObject)
    fmt.Println(outputObject)
}

输出:

{Zloy 22}
{[18 255 129 3 1 1 6 111 98 106 101 99 116 1 255 130 0 0 0] 0 0}

 [18 255 129 3 1 1 6 111 98 106 101 99 116 1 255 130 0 0 0]     

{[18 255 129 3 1 1 6 111 98 106 101 99 116 1 255 130 0 0 0] 0 0}
{ 0}

预期输出:

{Zloy 22}
{[18 255 129 3 1 1 6 111 98 106 101 99 116 1 255 130 0 0 0] 0 0}

 [18 255 129 3 1 1 6 111 98 106 101 99 116 1 255 130 0 0 0]     

{[18 255 129 3 1 1 6 111 98 106 101 99 116 1 255 130 0 0 0] 0 0}
{Zloy 22}

您需要将字段名称大写才能使其公开exportable/importable:

type object struct {
    Name string
    Age  int
}

https://play.golang.org/p/_YqSmeDi6oH