找回密码
 立即注册
查看: 189|回复: 0

Alpine环境Go使用Protobuf

[复制链接]
发表于 2022-5-26 21:11 | 显示全部楼层 |阅读模式
<h1>一、安装protoc</h1><h1>1、什么是protobuf</h1><p>protobuf也叫protocol buffer是google 的一种数据交换的格式,它独立于语言,独立于平台。google 提供了多种语言的实现:java、c#、c++、go 和 python,每一种实现都包含了相应语言的编译器以及库文件。</p><p>由于它是一种二进制的格式,无法使用 xml 、json进行数据交换快许多。可以把它用于分布式应用之间的数据通信或者异构环境下的数据交换。作为一种效率和兼容性都很优秀的二进制数据传输格式,可以用于诸如网络传输、配置文件、数据存储等诸多领域。</p><h1>2、安装protoc</h1><pre>apkaddproto</pre><p>验证一下,输入</p><pre>protoc--version</pre><p>
</p><h1>二、编译器调用</h1><p>Protobuf核心的工具集是C++语言开发的,官方的protoc编译器中并不支持Go语言,需要安装一个插件才能生成Go代码。用如下命令安装:</p><p>这个是旧的命令行</p><pre>gogetgithub.com/golang/protobuf/protoc-gen-go</pre><p>新的命令行</p><pre>goinstallgoogle.golang.org/protobuf/cmd/protoc-gen-go@latest</pre><p> 这将在GOBIN环境变量以更改安装位置。它必须在您的$PATH中,协议缓冲区编译器才能找到它。</p><p> 当使用go_out标志调用协议缓冲区编译器时,它会生成Go输出。go_out标志的参数是您希望编译器在其中编写Go输出的目录。编译器为每个.proto文件输入创建一个源文件。输出文件的名称是通过将.proto扩展名替换为.pb.go创建的。</p><p>
</p><p class="image-package"></p><p>
</p><p>
</p><p>相关官网资:</p><p>https://pkg.go.dev/google.golang.org/protobuf@v1.28.0#section-readme</p><p>https://developers.google.com/protocol-buffers/docs/reference/go-generated</p><p>
</p><h1>三、编写demo</h1><p>源码</p><pre>syntax="proto3";
packagetutorial;
optiongo_package="./test;tutorial";
messagePerson{
stringname=1;
int32id=2;//UniqueIDnumberforthisperson.
stringemail=3;

enumPhoneType{
MOBILE=0;
HOME=1;
WORK=2;
}

messagePhoneNumber{
stringnumber=1;
PhoneTypetype=2;
}

repeatedPhoneNumberphones=4;

}

//Ouraddressbookfileisjustoneofthese.
messageAddressBook{
repeatedPersonpeople=1;
}</pre><p>转换命令</p><pre>protoc--go_out=././tutorial.proto</pre><p>
</p><p class="image-package"></p><p>
</p><p>转换后部分代码截图</p><p>
</p><p class="image-package"></p><p>
</p><p>生成了后缀是bp.go</p>

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-5-13 13:52 , Processed in 0.102566 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表