我正在使用谷歌grpc与json代理.由于某种原因,我需要omitempty
从*.pb.go文件中生成的结构中删除标记.
如果我有这样的原型消息
message Status { int32 code = 1; string message = 2; }
生成的结构看起来像这样
type Status struct { Code int32 `protobuf:"varint,1,opt,name=code" json:"code,omitempty"` Message string `protobuf:"bytes,2,opt,name=message" json:"message,omitempty"` }
但我需要omitempty
从生成的结构中删除标记.我怎样才能做到这一点?
[更多]便携式解决方案:
用于sed
在生成via之后剥离标签protoc
。
在生成* .pb.go文件之后,我在go:generate脚本中实际使用的示例:
ls *.pb.go | xargs -n1 -IX bash -c 'sed s/,omitempty// X > X.tmp && mv X{.tmp,}'
注意:sed -i
此处未使用(inline-replacement),因为该标志在标准OS-X和Linux之间不可移植。