在proto中定义的enum,通常类型名字都会带上enum的前缀,很丑陋,如何去掉呢?
enum DataSourceType{
NotUse = 0;
MySQL = 1;
ElasticSearch = 2;
}
生成后的代码如下:
const (
DataSourceType_NotUse DataSourceType = 0
DataSourceType_MySQL DataSourceType = 1
DataSourceType_ElasticSearch DataSourceType = 2
)
这个前缀如何去掉呢?使用gogo proto的扩展语法就可以了:
import "github.com/gogo/protobuf/gogoproto/gogo.proto";
enum DataSourceType{
option (gogoproto.goproto_enum_prefix)=false; // 用这个选项去掉前缀
NotUse = 0;
MySQL = 1;
ElasticSearch = 2;
}
执行protoc,指定gogo proto的代码目录:
# 把gogo proto的代码放在了这个目录 /Users/ahfuzhang/code/github.com/gogo/protobuf/
protoc -I=. -I=/Users/ahfuzhang/code/ --gogofaster_out=plugins=grpc:. *.proto
最终生成的代码:
type DataSourceType int32
const (
NotUse DataSourceType = 0
MySQL DataSourceType = 1
ElasticSearch DataSourceType = 2
)
have fun
标签:proto,DataSourceType,enum,gogo,ElasticSearch,MySQL,去掉 From: https://www.cnblogs.com/ahfuzhang/p/16854321.html