本文主要是介绍Protocol Buffers,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Protocol Buffers
-
下载安装
-
https://github.com/protocolbuffers/protobuf
-
将下载的文件解压缩后放在C盘下的Program File下,并设置bin中protoc.exe的环境变量
-
-
语法
-
syntax = "proto3"; // 使用版本为proto3,默认为proto2,第一行不能为空且不能为注释option go_package = "./;blog";package blog;message User{ // 定义消息int32 uid =1;string uname = 2;int32 age = 3; }message Article{int32 aid = 1;string title = 2;int32 views = 3; }service UserService { // 定义服务rpc login(User) returns(User); }
-
-
序列化和反序列化
-
proto.marshal()/unmarshal()
-
-
json
和protobuf
相互转换-
// go get google.golang.org/protobuf/encoding/protojson package mainimport ("fmt""proto/blog""google.golang.org/protobuf/encoding/protojson" )func main() {user := blog.User{Uid: 2,Uname: "fyq",Age: 20,}// message -> jsonjsonString := protojson.Format(user.ProtoReflect().Interface())fmt.Printf("jsonString: %v\n", jsonString)// json -> messageu := user.ProtoReflect().Interface()protojson.Unmarshal([]byte(jsonString), u)fmt.Printf("u: %v\n", u) }
-
-
题目
-
protocol buffers目的
- 在不同语言间传递数据,同json、xml一样,比json、xml更加轻便高效
-
如何将
proto.proto
编译为Go代码-
protoc --go_out=. person.proto
-
-
这篇关于Protocol Buffers的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!