当前位置:网站首页>GO 使用 Protobuf实用指南
GO 使用 Protobuf实用指南
2022-08-09 14:59:00 【Small-K】
GO 使用 Protobuf实用指南
本文是笔者在日常工作中使用protoc生成go文件的实用总结, 并不会详细介绍各种细节, 之后有心得则会再添加
语法
syntax = "proto3";
package pt1;
option go_package = "/pt";
// option go_package = "github.com/smallki/pt;pt";
import "common.proto";
message HelloRequest {
string username = 1;
string password = 2;
}
message HelloResponse{
string msg = 1;
}
// grpc服务
service Hello {
rpc SayHello (HelloRequest) returns(HelloResponse) {}
rpc Heart (stream HeartRequest) returns (HeartRequest){}
}
syntax = "proto3";
定义proto的语法格式版本, 这里使用protobuf3
package pt1;
package定义的是此protobuf文件所属的模块(与go无关)
之所以要定义模块是为了防止类型冲突
比如, a.proto文件定义了一个
message A
, b.proto文件也定义了一个message A
, 如果两个proto文件在同一个模块,则会冲突,不被允许我们可以让a.proto指定
package a;
b.proto指定package b;
这样就可以通过 a.A, b.A 来同时使用两个不同的类型
option go_package = "/pt"
指定生成的go文件的包名
go_package
有两种格式, 第一种是/
+ 包名, 这样其他包在引用生成的go文件时不会import其他包第二种是
引用包名;包名
的方式, 若如此使用, 其他proto文件在引用此包时会在生成的go文件头部加上import "引用包名"
一般情况下, 我们生成的go文件都在同一个包, 所以用第一种方式即可
import "common.proto";
表示此proto文件需要引用common.proto中的类型, 这样写后可以使用common.proto中定义的类型
当前这种写法是相对路径, 可以在protoc中使用
-I
参数来指定根路径
生成命令
使用protoc
程序来生成对应go文件, protoc [options] protoFile
使用 --go_out来指定生成go文件的路径, 注意protoc会根据go_package来自动生成包文件夹, 如我们指定 option go_package="/pt"
, 则会在生成目录自动创建pt文件夹
protoc --go_out=. -I . protocol/hello.proto
边栏推荐
猜你喜欢
flask局域网访问失败解决方法(使用pycharm运行代码的一定要看)
时间序列分析
NiN(Network in Network) pytorch实现
Vim实用技巧_7.模式匹配和查找
深入浅出最优化(3) 最速下降法与牛顿法
PE format series _0x05: output table and relocation table (.reloc)
Candide3 face animation model
软件安全内存区域详解
【知识分享】异步串行收发器Uart(串口)-通信协议详解
Heap series _0x02: The past and present of the heap (WinDbg+Visual Studio compilation)
随机推荐
保存数据
CRM定制开发需要多少钱 CRM系统定制开发价格
【Postgraduate Work Weekly】(Week 7)
SQLMap常用命令介绍
Vim实用技巧_3.可视模式和命令模式
类定义中class和className中间的修饰词的作用有关问题
Vim实用技巧_7.模式匹配和查找
杭州富阳科目三新规3号线考试攻略
Heap series _0x03: heap block + malloc/new bottom layer + LFH (WinDbg analysis)
Vim实用技巧_6.复制和粘贴原理(寄存器)
【力扣】617. 合并二叉树
图论最短路径求解
[Deep Learning] SVM solves the linear inseparable situation (8)
Stetman的读paper小记:Deep Learning Backdoor Survey (Shaofeng Li, Shiqing Ma, Minhui Xue)
hugging face tutorial - Chinese translation - sharing custom model
【力扣】207. 课程表
Virtualbox 设置共享文件夹
Face recognition sample code analysis (2) - face recognition analysis
CTF online encryption and decryption and common tools
gccg++基本命令简介