go 语言中使用protobuf

go 语言中使用protobuf

protoc 编译器,使用插件的方式生成语言的代码,比如c++使用c++插件形成对应的代码,同时结合c++ 插件的子插件形成svr\cli的代码。

同样对于go 语言使用 go 语言的插件proto-gen-go 插件形成对应的代码。同时提供子插件 grpc 生成grpc框架的代码。

由于protoc 编译器使用go 语言中使用protobufgo 语言中使用protobuf这样的方式进行使用,注意到可以支持plugin 自定义插件的形式。根据上边的描述,自定义插件的形式为

protoc --plugin=/Users/simon/go/bin/protoc-gen-protorpcxtools --protorpcxtools_out=plugins=grpc:. ./testclient.proto

protoc --plugin=/Users/simon/go/bin/protoc-gen-protorpcxtools --protorpcxtools_out=plugins=grpc,p=svr:. ./testclient.proto

其中 protoc-gen-protorpcxtools为我自定义的插件名字,必须一以protoc-gen-开头,protoc根据protoc-gen-来找名字,protorpcxtools_out 部分以protorpcxtools开头,这部分是自己的自定义名字,plugins部分可以带参数,以逗号分割,比如。
–protorpcxtools_out=plugins=grpc,rr=tt,gg=55:. 等,表示protoc-gen-protorpcxtools插件可以获取的参数为plugins=grpc,rr=tt,gg=55。plugins表示执行的子插件。

自定义插件看起来很不错