下载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 main
import (
"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