刚刚好 发表于 2024-9-13 09:28

Alpine环境Go使用Protobuf

一、安装protoc

1、什么是protobuf

protobuf也叫protocol buffer是google 的一种数据交换的格式,它独立于语言,独立于平台。google 提供了多种语言的实现:java、c#、c++、go 和 python,每一种实现都包含了相应语言的编译器以及库文件。
由于它是一种二进制的格式,无法使用 xml 、json进行数据交换快许多。可以把它用于分布式应用之间的数据通信或者异构环境下的数据交换。作为一种效率和兼容性都很优秀的二进制数据传输格式,可以用于诸如网络传输、配置文件、数据存储等诸多范围。
2、安装protoc

apk add proto验证一下,输入
protoc --version
二、编译器调用

Protobuf核心的东西集是C++语言开发的,官方的protoc编译器中并不撑持Go语言,需要安装一个插件才能生成Go代码。用如下命令安装:
这个是旧的命令行
go get github.com/golang/protobuf/protoc-gen-go新的命令行
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest 这将在$GOBIN中安装一个protoc-gen-go二进制文件。设置$GOBIN环境变量以更改安装位置。它必需在您的$PATH中,协议缓冲区编译器才能找到它。
当使用go_out标识表记标帜调用协议缓冲区编译器时,它会生成Go输出。go_out标识表记标帜的参数是您但愿编译器在此中编写Go输出的目录。编译器为每个.proto文件输入创建一个源文件。输出文件的名称是通过将.proto扩展名替换为.pb.go创建的。





相关官网资:
https://pkg.go.dev/google.golang.org/protobuf@v1.28.0#section-readme
https://developers.google.com/protocol-buffers/docs/reference/go-generated

三、编写demo

源码
syntax = ”proto3”;
package tutorial;
option go_package = ”./test;tutorial”;
message Person {
string name = 1;
int32 id = 2;// Unique ID number for this person.
string email = 3;

enum PhoneType {
    MOBILE = 0;
    HOME = 1;
    WORK = 2;
}

message PhoneNumber {
    string number = 1;
    PhoneType type = 2;
}

repeated PhoneNumber phones = 4;

}

// Our address book file is just one of these.
message AddressBook {
repeated Person people = 1;
}转换命令
protoc--go_out=./ ./tutorial.proto




转换后部门代码截图





生成了后缀是bp.go
页: [1]
查看完整版本: Alpine环境Go使用Protobuf