查看: 86|回复: 0

go protoc-gen-go 安装详解

[复制链接]

2

主题

0

回帖

0

积分

热心网友

金币
0
阅读权限
220
精华
0
威望
0
贡献
0
在线时间
0 小时
注册时间
2011-9-15
发表于 2022-8-20 16:55:00 | 显示全部楼层 |阅读模式

首先是安装官方的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版的方法保持一致(第二版的自定义默认值特性依赖这类方法)

 



来源:https://www.cnblogs.com/shiding/p/16608117.html
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

相关侵权、举报、投诉及建议等,请发 E-mail:qiongdian@foxmail.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部