本文主要是介绍protoc结合go完成protocol buffers协议的序列化与反序列化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
下载protoc编译器
- 下载
https://github.com/protocolbuffers/protobuf/releases
ps: 根据平台选择需要的编译器,这里选择windows
- 解压
- 加入环境变量
安装go专用protoc生成器
https://blog.csdn.net/qq_36940806/article/details/135017748?spm=1001.2014.3001.5501
创建go项目,模拟proto buffer 序列化与反序列化
- 安装Protocol Buffers 插件
- 创建proto文件,路径:pbfile/user.proto
user.proto 内容:
// proto语法版本
syntax = "proto3";// 生成go文件所属包名
option go_package = "./service";// 指定文件生成出来的package
package service;// 消息
message User{string username = 1;int32 age = 2;
}
- 执行 protoc生成 pb.go 文件
protoc --go_out=./ .\pbfile\user.proto
生成文件内容:service/user.pb.go
- 创建main.go,进行序列化与反序列化
package mainimport ("github.com/golang/protobuf/proto""go-grpc/service""log"
)func main() {user := &service.User{Username: "test",Age: 23,}// 序列化marshal, err := proto.Marshal(user)if err != nil {log.Fatal(err)}// 反序列化newUser := &service.User{}err = proto.Unmarshal(marshal, newUser)if err != nil {log.Fatal(err)}log.Println(newUser)
}
- 执行main.go
这篇关于protoc结合go完成protocol buffers协议的序列化与反序列化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!