-1

我正在尝试将结构编组为字节(通过 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}
4

1 回答 1

2

您需要将字段名称大写以使其可公开导出/导入:

type object struct {
    Name string
    Age  int
}

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

于 2021-05-23T12:17:36.677 回答