本文简单记录,在Go下使用protobuf的过程。当然,我们得安装了Go,这里省略。
-
下载protoc
protoc是protobuf文件(.proto)的编译器,使用protoc工具可以将.proto文件转换为各种编程语言对应的源码,包含数据类型定义和调用接口等。
从 https://github.com/protocolbuffers/protobuf/releases 中下载最新的protobuf安装包 protoc-3.17.3-win64.zip
解压压缩包后将bin目录下的protoc.exe文件移动到 $GOPATH/bin目录下,注意$GOPATH/bin需要提前添加到环境变量Path目录下。
-
安装go protobuf插件
在命令行下直接执行下面的语句即可:
go get google.golang.org/protobuf/cmd/protoc-gen-go
-
编写protobuf文件(.proto)
我们测试用的user.proto文件如下:
syntax = "proto3";
package proto;
option go_package = "pd";
message User{
string name = 1;
bool male = 2;
}
-
生成protobuf
执行下面的命令,即可生成go使用protobuf文件,这里是user.pd.proto
protoc.exe --go_out=. user.proto
-
测试
测试代码:
//序列化
d := User{
Name: "jahon",
Male: true,
}
res, err := proto.Marshal(&d)
fmt.Println("res", res, err)
//反序列化
obj := &User{}
err = proto.Unmarshal(res, obj)
if err != nil {
panic(err)
}
fmt.Println("obj", obj, err)
输出结果:
res [10 5 106 97 104 111 110 16 1] <nil>
obj name:"jahon" male:true <nil>
网友评论