栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

go 与 protobuf 安装和使用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

go 与 protobuf 安装和使用

前言

        笔者,最近公司有一个项目采用go来编写,而通信是与java服务端的netty 进行socket 通信,而通信的接口结构是用protobuf 来进行定义的,目前网上好多关于go 的protobuf 的使用,但是在安装proto的包,和go的protobuf 生成go代码工具都不行(很大原因是新版本更新了,导致原来的地址或者路径不对导致),故重新整理一下,希望能帮助到大家,自己也是参考proto 官网整理出来的

 1.安装protobuf 工具
  • 进行官网进行protobuf 工具下载(这里以windows为例),如下图选择对应的系统和语言,go的话,直接选择系统即可。

  • 下载完成以后,如果是windows 系统,则把protobuf 的bin 目录下的 protoc.exe 拷贝到 go 的安装目录下的 bin 目录
2. 安装protobuf 生成相关代码插件包

执行安装proto-gen-go 的插件:

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

该命令会在 GOPATH 目录下的 bin 中安装 生成工具: protoc-gen-go.exe

3.  生成proto.pb.go 文件

先跳转到 rcs 目录下,然后执行命令:

我的目录层级是:

src

        proto

                xxxxa.proto

                xxxxb.proto

        proto.pb

                xxxxa.pb.go

                xxxxb.pb.go

执行生成proto.pb.go 的go文件:

// protoc -I=源proto文件目录 --go_out=生成的 proto.pb.go 文件所在目录中(具体还要结合proto文件中的go_packge 目录来共同定义) 源proto文件路径(相对于当前所在目录)
protoc -I=. --go_out=proto.pb proto/*.proto

最后文件就会生成到proto.pb 的目录下了,注意:在proto文件中的必须这个配置,结合命令才不会有问题:具体说明一下protoc -I 的中 : --go_out=path 与 proto 文件中的 go_package 中的配置的关系:

--go_out=path , 中的path , 它表示的是以当前命令所有的路径为起点,进行路径的跳转,而proto 文件中的 go_package 中的内容分为二段,以分号间隔 eg:  ../proto.pb;proto   

其中蓝色的第一段 ../proto.pb 表示 在(当前命令中为起点+之前--go_out=path 中的path) 为起点

也就是说,生成的xxxxa.pb.go 文件的会在 这个目录下: ./path/../proto.pb/xxxxa.pb.go

而第二段的绿色块:proto, 表示生成的xxxxa.pb.go 文件的包名是 proto

// [开始 go 选项配置]
option go_package = "../proto.pb;proto";
// [结束 go 选项配置]

关于go 与 java 的netty 服务端进行socket 通信,笔者会有下一篇单独介绍: go 与java netty 之间的通信实现

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/606310.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号