如何将Go地图序列化为protobuff

时间:2016-12-19 03:22:06

标签: go protocol-buffers

我正在关注this教程,并参与了序列化/封送处理将结构转换为协议缓冲区。我的结构有一张地图,我找不到任何关于如何处理编组地图的文档。

以下我想序列化Fields map[string]string

Go struct:

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

protobuf架构:

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.???
    })
}

我不知道如何处理最后一行以及我搜索关于将字段映射到protobuf方案的任何内容,而不是将地图映射到protobuf方案。

1 个答案:

答案 0 :(得分:3)

protobuf是一个定义明确的分类格式,并且使用它的好处之一是,它使用protobuf模式e.i为您(使用您喜欢的语言)生成所有数据结构。你不需要做一个手动编组或解组