Golang编码协议

Go使用protobuf

2021-09-13  本文已影响0人  简单点的笨演员

本文简单记录,在Go下使用protobuf的过程。当然,我们得安装了Go,这里省略。

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 get google.golang.org/protobuf/cmd/protoc-gen-go

我们测试用的user.proto文件如下:

syntax = "proto3";

package proto;

option go_package = "pd";

message User{
    string name = 1;
    bool male = 2;
}

执行下面的命令,即可生成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>
上一篇下一篇

猜你喜欢

热点阅读