如何将Go地图序列化为protobuff

dmi*_*ova 5 go protocol-buffers

我正在学习教程,并参与了序列化/编组Go结构到协议缓冲区的部分.我的结构有一个地图,我找不到任何关于如何处理编组地图的文档.

在下面我想序列化Fields map[string]string:

结构:

type Note struct {
    ID     NoteID
    Fields map[string]string
}
Run Code Online (Sandbox Code Playgroud)

protobuf架构:

package internal;

message Note {
    optional int64 ID = 1;
    optional map<string, string> Fields = 2;
}
Run Code Online (Sandbox Code Playgroud)

去元帅:

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

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

Yan*_*ozo 1

protobuf是一种定义良好的序列化格式,使用它的好处之一是只需使用 protobuf 模式即可为您(使用您最喜欢的语言)生成所有数据结构