由于实习项目中用的是 gRPC ,在学习 gRPC 之前,我们需要先学习一下 proto 语法
proto 简介
proto 语法
proto 文件编译
1,由于官方的 protoc 编译器中并不支持 Go 语言,所以首先下载 基于 Go 语言插件才能生成 Go 代码。命令如下:
$ go get github.com/golang/protobuf/protoc-gen-go
上述命令会在 GOPATH 下的 bin 目录下生成一个 protoc-gen-go 的可二进制文件(windows 系统)
2,下载官方的 protoc 编译器,下载地址:https://github.com/protocolbuffers/protobuf/releases ,可以下载 64位 protoc-win64.zip,解压后在 bin 目录下有 protoc 的二进制文件,将此文件拷贝到系统的环境变量中的 PATH 目录下(windows 系统可在 cmd 下输入命令 set 查看环境变量),当显示如下图所示时,表示设置成功:
3,然后编写一个 proto 文件,例如
syntax = "proto3"; package SayHi; service greetService { rpc SayHi(SayHiReq) returns (SayHiRsp); // 打声招呼 } message SayHiReq { string value = 1; } message SayHiRsp { string value = 2; }
4,执行 protoc 命令生成需要的语言代码,本文举例编译输出 Go 语言代码,命令如下:
$ protoc -I=. --go_out=plugins=grpc:. hello.proto
参数解释:-I : 表示原文件 hello.proto 的文件路径;--go_out[--java_out] 表示生成的语言类型;=. : 表示要生成的 hello.pb.go 的路径;
注:. 表示当前路径
注:此命令不能用 protoc -I=. --go_out=. hello.proto, 这样生成的 Go 语言代码是不完整的,缺少 server 和 client 端代码,具体原因未知。要使用protoc-gen-go内置的gRPC插件生成gRPC代码。