Go使用protobuf

作者: 简单点的笨演员 | 来源:发表于2021-09-13 13:54 被阅读0次

本文简单记录,在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>

相关文章

网友评论

    本文标题:Go使用protobuf

    本文链接:https://www.haomeiwen.com/subject/stqfgltx.html