一定义 protobuf 消息并生成 Go 代码

Posted 想学习安全的小白

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一定义 protobuf 消息并生成 Go 代码相关的知识,希望对你有一定的参考价值。

一、新建一个pcbook项目

二、创建proto文件

  1. 创建一个名为protoc的新文件夹,并在其下添加一个processor_message.proto文件

  2. 在processor_message.proto文件文件中定义CPU信息

    • 用string类型定义CPU的品牌与名字
    • 用无符号整型定义CPU里的内核与线程,因为他们不能为负数,所以使用无符号整型uint32
    • 用double类型定义最小和最大频率
    • 使用option go_package定义,生成的go文件的包名为pcbook
syntax = "proto3";

option go_package ="./;pcbook";

message CPU 
  string brand = 1;
  string name = 2;
  uint32 number_cores = 3;
  uint32 number_threads = 4;
  double min_ghz = 5;
  double max_ghz = 6;

三、生成 Go 代码

3.1、安装protobuf

3.1.1、从源码安装

  1. 安装protobuf的前置环境,命令:sudo apt-get install autoconf automake libtool curl make g++ unzip
  2. 安装protobuf的源文件,命令:git clone https://github.com/protocolbuffers/protobuf.git
  3. 进入到protobuf目录,命令:cd /home/tsb/Downloads/protobuf
  4. clone子模块的依赖,命令:git submodule update --init --recursive
  5. 执行自动生成的shell脚本,命令:./autogen.sh
  6. 配置文件shell脚本,命令:./configure
  7. 编译,命令:make
  8. 编译检查,命令:make check
  9. 编译安装,命令:sudo make install
  10. 刷新,命令:sudo ldconfig
  11. 查看安装结果,命令:protoc --version

3.1.2、直接安装

  1. 安装命令:sudo apt install -y protobuf-compiler
  2. 验证安装,命令:protoc --version

3.2、安装grpc

  1. 在pcbook目录下执行,命令:go get -u google.golang.org/grpc
  2. 在pcbook目录下执行命令
go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.26
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.1
  1. 设置环境变量:export PATH="$PATH:$(go env GOPATH)/bin"

3.3、生成go代码

  1. 创建一个名为的新文件夹pb来存储生成的 Go 代码

  2. 生成go代码命令:protoc --proto_path=proto --go_out=pb --go-grpc_out=pb proto/*.proto,将生成的代码存放进pb文件夹里

四、创建Makefile自动化生成

  1. 在pcbook目录下创建Makefile文件
  2. 编写Makefile文件
gen:
	protoc --proto_path=proto --go_out=pb --go-grpc_out=pb proto/*.proto

clean:
	rm pb/*.go 
-proto_path=proto --go_out=pb --go-grpc_out=pb proto/*.proto

clean:
	rm pb/*.go 

以上是关于一定义 protobuf 消息并生成 Go 代码的主要内容,如果未能解决你的问题,请参考以下文章

ProtoBuf 生成 Go 代码去掉 JSON tag omitempty

ProtoBuf 生成 Go 代码去掉 JSON tag omitempty

第四节——生成go测试代码

第四节——生成go测试代码

第四节——生成go测试代码

[Go] 使用protobuf进行序列化和反序列化