go中配置protobuf相关环境

566 阅读2分钟

1.下载对应系统的protoc安装包

安装包链接

2.在windows系统下配置protoc的环境变量(其它系统不演示了)

解压出来放到你想要放到盘下

image.png

环境变量中添加

image.png

在命令行中输入protoc,正常显示,就说明配置成功了

image.png

3.protoc-gen-go 的安装

go install google.golang.org/protobuf/cmd/protoc-gen-go@latest

如果从proto转go中提示如下,则需要配置在环境变量中配置gopath的路径下的bin目录

'protoc-gen-go' 不是内部或外部命令,也不是可运行的程序或批处理文件。

image.png

如果不知道gopath路径可以运行以下命令

go env

image.png

4.proto转换为go

创建proto文件

// 指定的当前proto语法的版本,有2和3
syntax = "proto3";
//option go_package = "path;name"; path 表示生成的go文件的存放地址,会自动生成目录的
//name 表示生成的go文件所属的包名
option go_package="../service";
// 指定等会文件生成出来的package
// 可以通过option go_package也可以设置包名,例common/proto 会在当前目录下生成common/proto目录,包名proto
package service;
//message关键字,可以理解为golang中的结构体
//变量后面的"赋值",注意并不是赋值,而是定义这个变量在这个message中的位置
message User {
  string username = 1;
  int32 age = 2;
}

创建完成后在proto文件所在目录下打开cmd,运行以下命令

protoc --go_out=. *.proto

以上的option go_package="../service";和package service;需要写在proto文件中,否则会报以下错误

image.png

正常运行之后

image.png

5.使用protoc-gen-go-grpc(Go调用grpc的插件)

go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest

安装后会在GOPATH的bin目录下生成一个protoc-gen-go-grpc.exe

运行以下命令,可以调用protoc-gen-go-grpc插件将proto文件转换为grpc相关的go文件

protoc --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative helloworld.proto

这种是简化的

protoc --go_out=. --go-grpc_out=. *.proto

image.png

生成以下代码

image.png