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,最终命令为:

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

  

本地先创建了一个hello.proto

1
2
3
4
5
6
7
syntax = "proto3";
 
package main;
 
message String {
  string value = 1;
 }

  

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

1
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 @   誓鼎  阅读(10498)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
历史上的今天:
2021-08-20 .Net Core RSA加解密,签名
点击右上角即可分享
微信分享提示