|
进入protobuf仓库,下载和电脑相对应的版本
https://github.com/protocolbuffers/protobuf/releases
解压后可以在bin目录看到对应的二进制执行文件
将该文件添加到环境目录下。
在mac上也使用命令安装:
brew install protobuf
三个插件选择其中一个
// go官方
go get github.com/golang/protobuf/protoc-gen-go
// 完全兼容google protobuf,它生成的代码质量和编解码性能均比goprotobuf高一些
go get github.com/gogo/protobuf/protoc-gen-gogo
// 最快
go get github.com/gogo/protobuf/protoc-gen-gofast
go get github.com/gogo/protobuf/proto
和下载的插件选择的对应命令
// go
protoc --go_out=. *.proto
// gogo
protoc --gogo_out=. *.proto
// gofast
protoc --gofast_out=. *.proto
消息定义
syntax = "proto3";
package proto;
message User {
int32 userId = 1;
string username = 2;
}使用消息
package main
import (
"fmt"
"go-demo/protocol"
"github.com/gogo/protobuf/proto"
)
func main() {
user := protocol.User{
UserId: 1,
Username: "testname",
}
// 将protocol消息序列化成二进制
userByte, err := proto.Marshal(&user)
if nil != err {
fmt.Println(err.Error())
return;
}
fmt.Println(userByte)
// 将二进制消息反序列化
userNew := protocol.User{}
err2 := proto.Unmarshal(userByte, &userNew)
if nil != err2 {
fmt.Println(err2.Error())
}
fmt.Printf("%+v\n", userNew)
} |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|