专栏首页陶士涵的菜地[Go] 使用protobuf进行序列化和反序列化

[Go] 使用protobuf进行序列化和反序列化

先定义消息类型

orders.proto

syntax = "proto2";
package message;
message Orders {
required int32 order_id=1;
required string title=2;
}

在GOPATH创建目录和编译这个消息类型输出到该目录,包名是message

mkdir $GOPATH/src/message;protoc --go_out $GOPATH/src/message orders.proto 

编写go文件进行序列化和反序列化刚才生成的包里的类型结构体数据

package main

import "message"

import "github.com/golang/protobuf/proto"

import "fmt"

func main() {
    orders := &message.Orders{
        OrderId: proto.Int32(1),
        Title:   proto.String("第一个订单"),
    }
    //序列化成二进制数据
    ordersBytes, _ := proto.Marshal(orders)
    //反序列化二进制数据
    twoOrders := &message.Orders{}
    proto.Unmarshal(ordersBytes, twoOrders)
    fmt.Println(twoOrders.GetTitle())
    fmt.Println(twoOrders.GetOrderId())

}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • [PHP] PHP7.4.1安全版本更改日志

    Bcmath: 修复了错误#78878(bc_shift_addsub中的缓冲区下溢)。 (CVE-2019-11046)。 核心: 修复了错误#7886...

    陶士涵
  • [javaEE] Servlet的调用过程和生命周期

    在http协议的请求头中获取到要访问的资源,查找web.xml文件找到对应的servelet

    陶士涵
  • [PHP] PHP7.4.2安全和修复版本的更改日志

    核心: Windows上的预加载支持已被禁用。 修复了错误#79022(对于尚未准备好使用的类,class_exists返回True)。 修复了错误#78...

    陶士涵
  • React的小案例:&&运算符、元素变量、三目运算符与React的条件渲染都在这里了

    用户1272076
  • glTF(二):PBR

    Peter Lu
  • 干货 | 初学者入门必看的“知识图谱”解读(中)

    本系列参考了市面上已知的,几乎全部“知识图谱”相关文章,并总结提炼出一套适合初学者入门的“知识图谱”的知识体系,希望大家能有所收获。

    AI研习社
  • oracle 11g 查看服务端/客户端编码,及修改db编码

    oracle 如果server与client端的编码不一致,asp.net读取db记录显示时,就可能出现乱码 查看oracle服务端编码:select * fr...

    菩提树下的杨过
  • SQL解析在美团点评中的应用

    美团技术团队
  • eventEmitter3源码分析与学习

    事件监听在前端的开发过程中是一个很常见的情况。DOM上的事件监听方式,让我们看到了通过事件的方式来进行具体的业务逻辑的处理的便捷。

    黄Java
  • 发散性思维(一)——通过变通和联想来解决问题

    A虽然有先手优势,但是他一味贪胜,没有注意到B在堵他的时候,依然悄悄凑够了一个胜利的局势。

    青南

扫码关注云+社区

领取腾讯云代金券