golang proto3的message中奇怪字段XXX_NoUnkeyedLiteral
Protocol Buffers中,通過syntax設置語法類型,有proto2和proto3兩種語法。當使用proto3時,會自動生成奇怪的字段,如XXX_NoUnkeyedLiteral、XXX_unrecognized、XXX_sizecache等。
# 生成命令:protoc --go_out=. pf.proto type Person struct {Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`Id int32 `protobuf:"varint,2,opt,name=id,proto3" json:"id,omitempty"`Email string `protobuf:"bytes,3,opt,name=email,proto3" json:"email,omitempty"`Phones []*Person_PhoneNumber `protobuf:"bytes,4,rep,name=phones,proto3" json:"phones,omitempty"`XXX_NoUnkeyedLiteral struct{} `json:"-"`XXX_unrecognized []byte `json:"-"`XXX_sizecache int32 `json:"-"`而生成的上述結構體在初始化的時候稍顯麻煩,如果想在生成pf.pb.go文件時,不產生上述字段,可使用gogofaster生成。
# 生成命令:protoc --gogofaster_out=. pf.protoprotoc-gen-gogofast (same as gofast, but imports gogoprotobuf)
protoc-gen-gogofaster (same as gogofast, without XXX_unrecognized,less pointer fields)
protoc-gen-gogoslick (same as gogofaster, but with generated string, gostring and equal methods)
gogofaster庫的用法參考鏈接:https://studygolang.com/articles/19114?fr=sidebar
proto3用法參考鏈接:https://blog.csdn.net/weixin_33936401/article/details/88252538
Golang protobuf: https://www.jianshu.com/p/7e3dcfbc5fd7
總結
以上是生活随笔為你收集整理的golang proto3的message中奇怪字段XXX_NoUnkeyedLiteral的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GAMS学习笔记02——GAMS读取Ex
- 下一篇: Sping之AOP