go protoc-gen-go 安装详解

首先是安装官方的protoc工具,可以从其GitHub官方网站下载

https://github.com/protocolbuffers/protobuf/releases

我下载的win-64版本

 

 

下载完成后解压把bin下面的protoc.exe 拷贝到GOPATH下面

 

 

然后是安装针对Go语言的代码生成插件
go get github.com/golang/protobuf/protoc-gen-go

  

报错如下错误

  

我使用的go版本是1.17。而Go1.17版使用go install安装依赖。所以应该按照它下面的格式go install pkg@version进行拉取,同时按照提示原来的地址作废需要
替换成google.golang.org/protobuf,最终命令为:

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

  

本地先创建了一个hello.proto

syntax = "proto3";

package main;

message String {
  string value = 1;
 }

  

然后通过以下命令生成相应的Go代码

protoc --go_out=. hello.proto

其中go_out参数告知protoc编译器去加载对应的protoc-gen-go工具,然后通过该工具生成代码放到当前目录。最后是一系列要处理的Protobuf文件的列表

 

如果出现下图问题,检查一下环境变量

 

错误:

 

提示需要  option go_package="./;main";

go_package 是指生成的文件要放哪里,main指生成的文件包名是什么

 

最终生成的文件:

 生成的结构体中还会包含一些以XXX_为名字前缀的成员,我们已经隐藏了这些成员。同时String类型还自动生成了一组方法,

其中ProtoMessage()方法表示这是一个实现了proto.Message接口的方法。此外,Protobuf还为每个成员生成了一个Get方法,

Get方法不仅可以处理空指针类型,而且可以和Protobuf第2版的方法保持一致(第二版的自定义默认值特性依赖这类方法)

 

posted @ 2022-08-20 16:55  誓鼎  阅读(9355)  评论(0编辑  收藏  举报