dpp89959 2016-12-19 03:22
浏览 94
已采纳

如何将Go地图序列化为protobuf

I'm following this tutorial and got to the part on serializing/marshaling Go structs into a protocol buffer. My struct has a map and I can't find any documentation on how to handle marshaling a map.

In the following I want to serialize Fields map[string]string:

Go struct:

type Note struct {
    ID     NoteID
    Fields map[string]string
}

protobuf schema:

package internal;

message Note {
    optional int64 ID = 1;
    optional map<string, string> Fields = 2;
}

Go marshal:

func MarshalNote(n *remember.Note) ([]byte, error) {
    return proto.Marshal(&Note{
        ID: proto.Int64(int64(n.ID))
        Fields: proto.???
    })
}

I have no idea what to do for the last line and anything I search for talks about mapping a field to a protobuf scheme, and not about mapping a map to a protobuf scheme.

  • 写回答

1条回答 默认 最新

  • douwen1915 2016-12-19 04:22
    关注

    protobuf is a well defined searlization format and one of the benefits of use it, it generates all the data structures for you(on your favorite language) just using the protobuf schema, e.i. you don't have to do a manual marshal or unmarshal

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?