protos

优质
小牛编辑
130浏览
2023-12-01

Protobuf 格式的数据结构和消息协议。都在同一个 protos 包内。

这里面是所有基本的数据结构(message)定义和 GRPC 的服务(service)接口声明。

所有的 .proto 文件是 protobuf 格式的声明文件,.pb.go 文件是基于 .proto 文件生成的 go 语言的类文件。

protobuf 工具可以从 这里 下载,推荐使用 3.0 版本系列。

下载安装后,需要安装对应语言的编译器,例如要生成 go 语言代码,则需要安装 protoc-gen-go

$ go get github.com/golang/protobuf/protoc-gen-go

可以使用 protobuf 编译器基于 protobuf 模板文件来生成各种语言的类文件。

$ protoc \--proto_path=IMPORT_PATH \--cpp_out=DST_DIR \--java_out=DST_DIR \--python_out=DST_DIR \--go_out=DST_DIR \--ruby_out=DST_DIR \--javanano_out=DST_DIR \--objc_out=DST_DIR \--csharp_out=DST_DIR \path/to/file.proto

其中,--proto_path=IMPORT_PATH 是当 proto 文件中存在导入时候,进行查找的路径,等价于 -I=IMPORT_PATH,可以多次使用来指定多个导入路径。

为了生成支持 grpc 的代码,还可以提供生成参数 plugins=grpc,例如

$ protoc \--proto_path=IMPORT_PATH \--go_out=plugins=grpc:DST_DIR \ path/to/file.proto

另外,生成的结构体,一般都至少默认支持 4 个默认生成的方法。

  • Reset():重置结构体。
  • String() string:返回代表对象的字符串。
  • ProtoMessage():协议消息。
  • Descriptor([]byte, []int):描述信息。