Как переводить гобсы между программами - PullRequest
0 голосов
/ 23 января 2019

Я использую приведенный ниже код для создания файла gob, который успешно выполняется.

var METADATA = []interface{}{
     map[string]interface{}{...},
     map[string]interface{}{...},
     ...
} 

gob.Register(map[string]interface{}{})
gob.Register([]interface{}{})
file, err := os.Create("./thrift_metadata.gob")
if err != nil {
    return err
}
encoder := gob.NewEncoder(file)
err = decoder.Decode(object)

Ниже представлен декодер, скомпилированный из совершенно другой кодовой базы, и отладочный двоичный файл, который завершается неудачей.

    gobPath := path.Join(currentWorkingDirectory, "./thrift_metadata.gob")
    file, err := os.Open(gobPath)
    if err != nil {
        panic(err)
    }
    gob.Register(map[string]interface{}{})
    gob.Register([]interface{}{})
    decoder := gob.NewDecoder(file)
    err = decoder.Decode(object)

Код декодирования завершается с ошибкой:

gob: decoding into local type *[]map[string]interface {}, received remote type 

Кто-нибудь знает, как решить эту проблему?

...