【解决一个小问题】proto文件中的enum,去掉长长的重复的enum名字

在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 😃

posted on 2022-11-03 14:16  ahfuzhang  阅读(551)  评论(0)    收藏  举报