首页 > 其他分享 >【解决一个小问题】proto文件中的enum,去掉长长的重复的enum名字

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

时间:2022-11-03 14:24:54浏览次数:54  
标签:proto DataSourceType enum gogo ElasticSearch MySQL 去掉

在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

相关文章