当前位置:网站首页>Protocol Buffer usage
Protocol Buffer usage
2022-08-01 20:34:00 【Cloud full of notes】
1. Protocol Buffer 使用
1.1. Prerequisites
- Go, any one of the three latest major releases of Go.
For installation instructions, see Go’s Getting Started guide.
- Protocol buffer compiler,
protoc
, version 3.
For installation instructions, see Protocol Buffer Compiler Installation.
- Go plugins for the protocol compiler:
Install the protocol compiler plugins for Go using the following commands:
$ go install google.golang.org/protobuf/cmd/[email protected]
$ go install google.golang.org/grpc/cmd/[email protected]
Update your PATH
so that the protoc
compiler can find the plugins:
$ export PATH="$PATH:$(go env GOPATH)/bin"
1.2. protoc 工具使用
前面我们用 protoc
来编译 .proto
文件为 go 语言, 为了支持编译为 go, 需要安装 protoc-gen-go
插件, C# 可以安装 protoc-gen-zsharp
插件.
需要注意的是, 转换 .proto
为编程语言, 不一定要安装 protoc
.
例如 C# 只需要把 .proto
文件放到项目中, 通过包管理器安装一个库, 就会自动转换为相应的代码.
回归正题, 聊一下 protoc
编译 .proto
文件的命令.
protoc
常用的参数如下:
--proto_path=. #指定proto文件的路径, 填写 . 表示就在当前目录下
--go_out=. #表示编译后的文件存放路径; 如果编译的是 csharp, 则 --csharp_out
--go_opt={
xxx.proto}={
xxx.proto的路径} # 示例: --go_opt=Mprotos/bar.proto=example.com/project/protos/foo
最简单的编译命令:
protoc --go_out=. *.proto
--{xxx}_out
指令是必须的, 因为要输出具体的编程语言代码.
这个输出文件的路径是执行命令的路径, 如果我们不在 .proto
文件目录下执行命令, 则输出的代码便不是相同位置了.为了解决这个问题, 我们可以使用:
--go_opt=paths=source_relative
这样在别的地方执行命令, 生成的代码会跟 .proto
文件放在相同的位置.
1.3. protoc-gen-go
protoc-gen-go
is a plugin for the Google protocol buffer compiler to generate Go code. Install it by building this program and making it accessible within your PATH with the name:
protoc-gen-go
The ‘go’ suffix becomes part of the argument for the protocol compiler, such that it can be invoked as:
protoc --go_out=paths=source_relative:. path/to/file.proto
This generates Go bindings for the protocol buffer defined by file.proto
. With that input, the output will be written to:
path/to/file.pb.go
See the README
and documentation for protocol buffers to learn more:
https://developers.google.com/protocol-buffers/
1.4. 参考
边栏推荐
- 有用的网站
- 乐观锁批量跟新 纯SQL
- ARTS_202207W2
- idea插件generateAllSetMethod一键生成set/get方法以及bean对象转换
- 泰德制药董事长郑翔玲荣膺“2022卓越影响力企业家奖” 泰德制药荣获“企业社会责任典范奖”
- Go Atomic
- 【多任务学习】Modeling Task Relationships in Multi-task Learning with Multi-gate Mixture-of-Experts KDD18
- 【kali-信息收集】(1.2)SNMP枚举:Snmpwalk、Snmpcheck;SMTP枚举:smtp-user-enum
- 漏刻有时文档系统之XE培训系统二次开发配置手册
- 研究生新同学,牛人看英文文献的经验,值得你收藏
猜你喜欢
数据库内核面试中我不会的问题(1)
AQS原理和介绍
Godaddy domain name resolution is slow and how to use DNSPod resolution to solve it
第55章 业务逻辑之订单、支付实体定义
因斯布鲁克大学团队量子计算硬件突破了二进制
To promote energy conservation institute 】 【 the opinions of the agricultural water price reform
Debug一个ECC的ODP数据源
【个人作品】记之-串口日志记录工具
使用Huggingface在矩池云快速加载预训练模型和数据集
[Multi-task learning] Modeling Task Relationships in Multi-task Learning with Multi-gate Mixture-of-Experts KDD18
随机推荐
通配符 SSL/TLS 证书
外骨骼机器人(七):标准步态数据库
Redis 做网页UV统计
算法---解码方法(Kotlin)
STAHL触摸屏维修一体机显示屏ET-316-TX-TFT常见故障
密码学的基础:X.690和对应的BER CER DER编码
【多任务学习】Modeling Task Relationships in Multi-task Learning with Multi-gate Mixture-of-Experts KDD18
系统收集集
Use WeChat official account to send information to designated WeChat users
The configuration manual for the secondary development of the XE training system of the missing moment document system
Fork/Join线程池
线程池处理异常的方法
【多任务优化】DWA、DTP、Gradnorm(CVPR 2019、ECCV 2018、 ICML 2018)
密码学的基础:X.690和对应的BER CER DER编码
作为程序员你应该会的软件
Godaddy domain name resolution is slow and how to use DNSPod resolution to solve it
SIPp 安装及使用
[Energy Conservation Institute] Application of Intelligent Control Device in High Voltage Switchgear
useful website
因斯布鲁克大学团队量子计算硬件突破了二进制