protoplus
通用的描述文件及代码生成器及工具集
特性
描述文件格式
enum Vocation {
Monkey
Monk
Pig
}
struct PhoneNumber {
number string
type int32
}
struct Person {
name string
id int32
email string
phone PhoneNumber
voc Vocation
}
struct AddressBook {
person []Person
}
特性
支持类型
- int32: 32位整形
- int64: 64位整形
- uint32: 无符号32位整形
- uint64: 无符号64位整形
- string: 字符串
- float32: 单精度浮点数
- float64: 双精度浮点数
- bytes: 二进制数据
- enum: int32封装
- bool: 布尔
- struct 结构体
所有类型前添加[]表示数组
编译
go get -u -v github.com/bobwong89757/protoplus
命令行参数
使用方法
protoplus -package=YourPackageName -go_out=YourMsg_gen.go a.proto b.proto
默认生成的go,C#源码文件不带消息ID绑定,可以使用以下命令行输出类型后,再结合自己的生成器生成绑定代码
protoplus -json_out=YourMsg_gen.go a.proto b.proto
注意协议区别
-
文档中标注的"protoplus协议"和"Protobuf协议"为两种不同的协议
-
protoplus协议在很大程度上接近Protobuf协议,但并不是100%兼容, 也没有考虑兼容pb协议
-
go_out,cs_out等语言直接输出支持的是protoplus协议,
如需要pb协议的C#或go语言, 请使用pb_out参数输出proto文件后, 用pb的工具链生成对应语言的源码
备注
感觉不错请star, 谢谢!
知乎: http://www.zhihu.com/people/sunicdavy
提交bug及特性: https://github.com/bobwong89757/protoplus/issues