【问题标题】:Save nested struct to gob将嵌套结构保存到 gob
【发布时间】:2018-10-07 07:34:16
【问题描述】:

我正在尝试将结构保存到 gob,但文件缺少嵌套类型的值。我可以自己保存 Matrix 类型,但是 Network 结构的 gob 数据不包括 Matrix 值。有没有办法将这个嵌套结构保存到 gob 或者我必须拆分它?

type Matrix [][]float64
type Network struct {
     wih                Matrix
     who                Matrix
}

谢谢!

【问题讨论】:

    标签: go struct slice gob


    【解决方案1】:

    您必须导出要编码的结构字段:

    type Network struct {
         Wih Matrix
         Who Matrix
    }
    

    引用encoding/gob的包文档:

    还支持结构、数组和切片。结构编码和解码仅导出的字段

    导出字段后,它将起作用。看这个例子:

    n := Network{
        Wih: Matrix{{1.1, 2.2}, {3.3, 4.4}},
        Who: Matrix{{5.5, 6.6}, {7.7, 8.8}},
    }
    fmt.Println(n)
    
    buf := &bytes.Buffer{}
    if err := gob.NewEncoder(buf).Encode(n); err != nil {
        panic(err)
    }
    
    var n2 Network
    if err := gob.NewDecoder(buf).Decode(&n2); err != nil {
        panic(n2)
    }
    fmt.Println(n2)
    

    输出(在Go Playground上试试):

    {[[1.1 2.2] [3.3 4.4]] [[5.5 6.6] [7.7 8.8]]}
    {[[1.1 2.2] [3.3 4.4]] [[5.5 6.6] [7.7 8.8]]}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-29
      • 1970-01-01
      • 2011-12-29
      • 1970-01-01
      • 2017-12-06
      • 2017-04-02
      相关资源
      最近更新 更多