Сохранить вложенную структуру в gob

Я пытаюсь сохранить структуру в gob, но в файле отсутствуют значения вложенного типа. Я могу сохранить тип Matrix самостоятельно, но данные gob структуры Network не включают значения Matrix. Есть ли способ сохранить эту вложенную структуру в gob или мне нужно разделить ее?

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

Спасибо!

Создание API ввода вопросов на разных языках программирования (Python, PHP, Go и Node.js)
Создание API ввода вопросов на разных языках программирования (Python, PHP, Go и Node.js)
API ввода вопросов - это полезный инструмент для интеграции моделей машинного обучения, таких как ChatGPT, в приложения, требующие обработки...
2
0
1 022
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы должны экспортировать поля структуры, которые хотите кодировать:

type Network struct {
     Wih Matrix
     Who Matrix
}

Цитата из пакетной документации encoding/gob:

Structs, arrays and slices are also supported. Structs encode and decode only exported fields.

После экспорта полей все заработает. См. Этот пример:

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)

Вывод (попробуйте на Перейти на игровую площадку):

{[[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]]}

Другие вопросы по теме