我正在关注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方案。
答案 0 :(得分:3)
protobuf是一个定义明确的分类格式,并且使用它的好处之一是,它使用protobuf模式e.i为您(使用您喜欢的语言)生成所有数据结构。你不需要做一个手动编组或解组