Вы должны экспортировать поля структуры, которые хотите кодировать:
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]]}