将protobuf消息转换为struct后添加了一些奇怪的字段?

时间:2018-07-30 09:42:43

标签: go protocol-buffers

我想要一个API来保存用户。这是我的用户消息:

message User {
    int32 uid = 1;
    string username = 2;
    string password = 3;
}

然后我使用protoc-gen-go将其转换为结构。我发现添加了一些奇怪的字段(XXX_NoUnkeyedLiteralXXX_unrecognized)。

type User struct {
    Uid                  int32    `protobuf:"varint,1,opt,name=uid,proto3" json:"uid,omitempty"`
    Username             string   `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"`
    Password             string   `protobuf:"bytes,3,opt,name=password,proto3" json:"password,omitempty"`
    XXX_NoUnkeyedLiteral struct{} `json:"-"`
    XXX_unrecognized     []byte   `json:"-"`
    XXX_sizecache        int32    `json:"-"`
}

由于这些字段,我无法将其保存到MySQL,因为我的MySQL表没有这些字段。有人好的建议吗?我必须创建另一个结构以将MySQL表转换为protobuf消息吗?

1 个答案:

答案 0 :(得分:0)

gogoprotobuf是golang / protobuf的分支,具有额外的代码生成功能。

protoc-gen-gogofaster(无法识别XXX_,指针字段较少)

go get github.com/gogo/protobuf/protoc-gen-gofaster

go install github.com/gogo/protobuf/protoc-gen-gofaster

protoc --gofaster_out=plugins=grpc:. my.proto