目录
创建protobuf文件user.proto
syntax = "proto3";
option go_package = "./;user";
package user;
message Article{
int32 aid = 1;
string title = 2;
int32 views = 3;
};
编译生成go文件
protoc --go_out=./user ./user/*.proto
创建main.go文件
package main
import (
"fmt"
"pro01/user"
"google.golang.org/protobuf/proto"
)
func main() {
article := &user.Article{
Aid: 1,
Title: "protobuf for golang",
Views: 100,
}
//序列化成二进制数据
bytes, _ := proto.Marshal(article)
fmt.Printf("bytes: %v\n", bytes)
otherArticle := &user.Article{}
proto.Unmarshal(bytes, otherArticle)
fmt.Printf("otherArticle.GetAid(): %v\n", otherArticle.GetAid())
fmt.Printf("otherArticle.GetTitle(): %v\n", otherArticle.GetTitle())
fmt.Printf("otherArticle.GetViews(): %v\n", otherArticle.GetViews())
}
运行结果:
bytes: [8 1 18 19 112 114 111 116 111 98 117 102 32 102 111 114 32 103 111 108 97 110 103 24 100]
otherArticle.GetAid(): 1
otherArticle.GetTitle(): protobuf for golang
otherArticle.GetViews(): 100