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()
      
  • jsonprotobuf相互转换

    • // go get google.golang.org/protobuf/encoding/protojson
      package main
      
      import (
      	"fmt"
      	"proto/blog"
      	"google.golang.org/protobuf/encoding/protojson"
      )
      
      func main() {
      	user := blog.User{
      		Uid:   2,
      		Uname: "fyq",
      		Age:   20,
      	}
      
          // message -> json
      	jsonString := protojson.Format(user.ProtoReflect().Interface())
      	fmt.Printf("jsonString: %v\n", jsonString)
      	// json -> message
      	u := 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
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值