Я считаю, что это законный вариант использования для сериализации Gob. Все же enc.Encode
возвращает ошибку, потому что Something
не имеет экспортированного поля. Обратите внимание, что я не сериализую Something
напрямую, а только Composed
, который содержит экспортированные поля.
Единственный найденный мной обходной путь - добавить Dummy
(экспортированное) значение к Something
. Это безобразно Есть ли более элегантное решение?
https://play.golang.org/p/0pL6BfBb78m
package main
import (
"bytes"
"encoding/gob"
)
type Something struct {
temp int
}
func (*Something) DoSomething() {}
type Composed struct {
Something
DataToSerialize int
}
func main() {
enc := gob.NewEncoder(&bytes.Buffer{})
err := enc.Encode(Composed{})
if err != nil {
panic(err)
}
}