Golang下生成protocol buffers代码以及grpc代码的简单教程

Golang下生成protocol buffers代码以及grpc的简单教程

本教程基于Goland IDE,Golang版本为1.17.4(建议使用1.16以上版本),生成了普通的pb和grpc代码

首先使用Goland创建一个新项目prototech
Golang下生成protocol buffers代码以及grpc代码的简单教程_第1张图片

接着创建两个目录pbproto,其中proto用来存放初始的.proto文件,pb存放生成的.pb.go源代码

在proto新建一个.proto文件test.proto
Golang下生成protocol buffers代码以及grpc代码的简单教程_第2张图片

在这里插入图片描述
在test.proto中编辑以下文本

syntax = "proto3";  //protocol buffers的版本
package main;
option go_package = "/pb";   //输出的目标文件位置
message CPU{
  uint32 number_cores = 1;
  uint32 number_threads = 2;
  double max_hz_g = 3;
}

打开Terminal,安装protocol buffers的编译器,也可以直接下载最新的版本

//指定版本
go install google.golang.org/protobuf/cmd/[email protected]
go install google.golang.org/grpc/cmd/[email protected]

//最新版本
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest

接着就可以开始编译.proto生成pg.go文件,由于我们的文件结构为:

prototech
-pb
-proto

当前的位置是/prototech,由于在test.proto中指定的go_package = “/pb”,我们可以直接将结果文件输出到pb目录下,通过修改go_package,你也可以自定义输出文件存放的位置
在这里插入图片描述

protoc --go-grpc_out=. proto/test.proto  

可以看到在pb目录下test.pb.go文件已经生成
Golang下生成protocol buffers代码以及grpc代码的简单教程_第3张图片
如果要生成grpc.pb.go文件,修改一下命令行参数就行

protoc --go-grpc_out=. proto/test.proto

如果无法直接生成grpc.pb.go,可以尝试在test.proto中添加以下代码

syntax = "proto3";
package main;
option go_package = "/pb";
message CPU{
  uint32 number_cores = 1;
  uint32 number_threads = 2;
  double max_hz_g = 3;
}

service HelloService {
  rpc Hello (CPU) returns (CPU);
}

接着继续使用 protoc --go-grpc_out=. proto/test.proto,就能在pb目录下看到了
Golang下生成protocol buffers代码以及grpc代码的简单教程_第4张图片

你可能感兴趣的:(golang)