gob 新的数据编码方式(序列化与反序列化数据)

cdz620 · · 1147 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

介绍

  • 数据在网络上传输,不同的服务端通信需要基于一定的协议进行交换数据。发送端encode编码数据,接收端decode解码数据。
  • 常见的的一些数据编码方式:json,xml,proto buffers, html等
  • gob 与json,xml类似是一种基于go原生的数据

使用场景

为什么go 定义了新的一种数据编码方式?

  • 常见的数据编码如json,xml等,是为了兼容已经存在的数据编码方式,可以与其他语言服务进行通信。
  • 对于两端同样是go开发的服务,可以使用gob进行更快,更高效的数据传输。

优点

  • 自描述数据格式:发送端与接收端无需沟通,定义两端统一的数据格式
  • 传输速度更快,更高效

basic

  • 基于gob编码的流数据,包含自描述类型信息,各项数据处理前包含类型信息
  • 支持的类型:基础数据类型(int, int64, unsint ……),基础数据类型的指针,Nil不支持(无意义),基于基础数据类型的复合数据类型(user-defibned struct, map slice)
  • 接收端与发送端数据传输,细节内容,太细可以浏览一遍
    • 接收端的数据类型不一定需要与发送端的数据一定相同,兼容即可。
      • 可以多字段或少字段
      • 字段名相同时,类型若可以转换,也能通信
      • 指针类型支持,会自动处理,接收时解析到对应的内存空间
    • 两端数据类型冲突时,会返回error
    • 不支持int8,int16
    • 高级应用:支持自定义编码实现,相关接口
      • GobEncoder: encoding.BinaryMarshaler
      • GobDecoder: encoding.BinaryUnmarshaler

参考文档


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:cdz620

查看原文:gob 新的数据编码方式(序列化与反序列化数据)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1147 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传