介绍
  • 数据在网络上传输,不同的服务端通信需要基于一定的协议进行交换数据。发送端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
参考文档

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