从golang结构生成proto文件
我有一个golang结构,其中包含对其他一些结构的引用.是否有自动方式从结构生成.proto文件?
例如: type A struct { a int b B } type B struct { c []C } type C struct { x int } 应该生成: 消息A,B,C等原型3是优选的. https://github.com/kubernetes/kubernetes/tree/master/cmd/libs/go2idl似乎有相关的东西,但没有记录.任何选择? 解决方法
我从Go源代码中找到了包,Generate .proto文件:
proteus (https://github.com/src-d/proteus) Proteus /pro?ti?s/是一个工具,用于从Go结构,类型和函数生成协议缓冲版本3兼容的.proto文件. 这个库背后的动机是使用Go作为模型的真实来源而不是相反,然后从.proto文件生成Go代码,该文件不生成惯用代码. 生成protobuf消息 //proteus:generate type User struct { Model Username string } type Model struct { ID int CreatedAt time.Time } 此示例将生成以下protobuf消息. message User { int32 id = 1; google.protobuf.Timestamp created_at = 2; string username = 3; } 安装 go get -v gopkg.in/src-d/proteus.v1/... 要求 整个过程有两个要求. protoc binary installed on your path go get -u github.com/gogo/protobuf/... 用法 您可以为Go类型,RPC客户端和服务器接口以及包的RPC服务器实现生成proto文件,marshal / unmarshal和其余protobuf内容.也就是说,整个过程. proteus -f /path/to/protos/folder -p my/go/package -p my/other/go/package 您只能使用proteus提供的命令行工具生成proto文件. proteus proto -f /path/to/output/folder -p my/go/package -p my/other/go/package --verbose 您也可以只为包生成gRPC服务器实现. proteus rpc -p my/go/package -p my/other/go/package 注意:当然,如果默认值不符合您的需要,那么在proteus可通过插件扩展之前,您可以使用提供的组件将您自己的生成器命令组合在一起.查看软件包的godoc文档. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |