专业游戏门户,分享手游网游单机游戏百科知识攻略!

嗨游网
嗨游网

golang Gob是什么

来源:小嗨整编  作者:小嗨  发布时间:2024-03-21 07:38
摘要:gob是golang包自带的一个数据结构序列化的编码/解码工具,编码使用encoder,解码使用decoder。gob使用io.writer接口,通过newencoder()函数创建encoder对象通过调用encode()方法实现编码操...

gob是golang包自带的一个数据结构序列化的编码/解码工具,编码使用encoder,解码使用decoder。gob使用io.writer 接口,通过newencoder()函数创建encoder对象通过调用encode()方法实现编码操作;使用io.reader接口,通过newdecoder()函数创建decoder对象并调用decode()方法完成解码操作。

golang Gob是什么

本教程操作环境:windows7系统、GO 1.18版本、Dell G3电脑。

  gob全称为:Go binary

  Golang自带的一个数据结构序列化编码/解码工具,也就是说gob可以讲go中的一个数据结构序列化成某种东西,还能反序列化!序列化成啥我们后面来看,不管是变成一个字符串,变成二进制流,变成啥先不管,反正作用就是序列化。

  Gob使用时我们需要关注Encoder和Decoder对象,顾名思义,一个是编码的时候用的,一个是解码的时候用的,我们看一下怎么获取这两个对象先:

   所以很明确,需要调用这两个函数来获取Encoder和Decoder对象。注意这里的参数是io.Writer和io.Reader接口类型,我们在上一讲介绍过这两个接口,所以这里需要的参数分别是实现了io.Writer和io.Reader接口类型的对象即可。

  Encoder和Decoder分别有一个主要的方法是:

  看到这里我们已经可以得到如下结论:

  Gob 使用 io.Writer 接口,通过 NewEncoder() 函数创建 Encoder 对象通过调用 Encode()方法实现编码操作;使用 io.Reader 接口,通过 NewDecoder() 函数创建 Decoder 对象并调用 Decode()方法完成解码操作!

  接下来我们试着用一下这个Encoder和Decoder,就轻轻松松入门gob了,来看第一个例子

  例1:数据结构与bytes.Buffer之间的转换(编码成字节切片)

 1package main 2 3import ( 4    "bytes" 5    "fmt" 6    "encoding/gob" 7    "io" 8) 910//准备编码的数据11type P struct {12    X, Y, Z int13    Name    string14}1516//接收解码结果的结构17type Q struct {18    X, Y *int3219    Name string20}2122func main() {23    //初始化一个数据24    data := P{3, 4, 5, "CloudGeek"}25    //编码后得到buf字节切片26    buf := encode(data)27    //用于接收解码数据28    var q *Q29    //解码操作30    q = decode(buf)31    //"CloudGeek": {3,4}32    fmt.Printf("%q: {%d,%d}\n", q.Name, *q.X, *q.Y)3334}3536func encode(data interface{}) *bytes.Buffer {37    //Buffer类型实现了io.Writer接口38    var buf bytes.Buffer39    //得到编码器40    enc := gob.NewEncoder(&buf)41    //调用编码器的Encode方法来编码数据data42    enc.Encode(data)43    //编码后的结果放在buf中44    return &buf45}4647func decode(data interface{}) *Q {48    d := data.(io.Reader)49    //获取一个解码器,参数需要实现io.Reader接口50    dec := gob.NewDecoder(d)51    var q Q52    //调用解码器的Decode方法将数据解码,用Q类型的q来接收53    dec.Decode(&q)54    return &q55}
登录后复制

  例2:数据结构到文件的序列化和反序列化

 1package main 2 3import ( 4    "encoding/gob" 5    "os" 6    "fmt" 7) 8 9//试验用的数据类型10type Address struct {11    City    string12    Country string13}1415//序列化后数据存放的路径16var filePath string1718func main() {19    filePath = "./address.gob"20    encode()21    pa := decode()22    fmt.Println(*pa) //{Chengdu China}23}2425//将数据序列号后写到文件中26func encode() {27    pa := &Address{"Chengdu", "China"}28    //打开文件,不存在的时候新建29    file, _ := os.OpenFile(filePath, os.O_CREATE|os.O_WRONLY, 0666)30    defer file.Close()3132    //encode后写到这个文件中33    enc := gob.NewEncoder(file)34    enc.Encode(pa)35}3637//从文件中读取数据并反序列化38func decode() *Address {39    file, _ := os.Open(filePath)40    defer file.Close()4142    var pa Address43    //decode操作44    dec := gob.NewDecoder(file)45    dec.Decode(&pa)46    return &pa47}
登录后复制

  上面2个例子都不难,我去掉了错误处理之类的代码,尽量注释了每块代码,耐心看完这2个例子应该就能体会gob的encode和decode精髓了。

理解gob是什么的基础上,如果你需要使用gob开发,建议详细看一下官方文档,了解一下更多的细节:golang.org/pkg/encoding/gob/

【相关推荐:Go视频教程、编程教学】

以上就是golang Gob是什么的详细内容,更多请关注易企推科技其它相关文章!


本文地址:网络百科频道 https://www.eeeoo.cn/wangluo/1152128.html,嗨游网一个专业手游免费下载攻略知识分享平台,本站部分内容来自网络分享,不对内容负责,如有涉及到您的权益,请联系我们删除,谢谢!


网络百科
小编:小嗨整编
相关文章相关阅读
  • 魔兽世界泰兰德是什么职业(魔兽世界泰兰德幻化怎么获得)?

    魔兽世界泰兰德是什么职业(魔兽世界泰兰德幻化怎么获得)?

    魔兽世界泰兰德是什么职业(魔兽世界泰兰德幻化怎么获得)?在魔兽世界中,泰兰德是魔兽世界中暗夜精灵种族的代表性角色,她以牧师职业为主。牧师在游戏中拥有强大的治疗和辅助能力,是团队中不可或缺的重要角色。泰兰德作为一名牧师,擅长使用圣光和暗影之力...

  • 睡眠app哪个好用(睡眠app是什么原理)?

    睡眠app哪个好用(睡眠app是什么原理)?

    睡眠app哪个好用(睡眠app是什么原理)?随着科技的发展,越来越多的睡眠APP走进了我们的生活。它们通过科学的原理和实用的功能,帮助人们改善睡眠质量,缓解压力。本文将为您盘点几款热门的睡眠APP。睡眠app哪个好用1.小睡眠小睡眠是一款备...

  • 梦幻西游嘉年华是什么时候(梦幻手游嘉年华2024)?

    梦幻西游嘉年华是什么时候(梦幻手游嘉年华2024)?

    梦幻西游嘉年华是什么时候(梦幻手游嘉年华2024)?据悉,梦幻西游嘉年华2024的首场活动已经在2024年1月12日19:30正式开启,为广大玩家带来了一场名为“惊喜宝藏夜”的狂欢盛宴。在这次活动中,不仅有重量级嘉宾的精彩表演,梦幻开发组的...

  • dnf卢克西是什么职业(dnf卢克西三件套属性)?

    dnf卢克西是什么职业(dnf卢克西三件套属性)?

    dnf卢克西是什么职业(dnf卢克西三件套属性)?在dnf中,卢克西并不是一个职业,而是一套装备的名称。卢克西三件套是专为鬼剑士职业设计的装备套装,尤其适合那些依赖觉醒技能输出的角色。卢克西三件套的具体装备包括以下三件:1.卢克西的灵魂狂气...

  • win7激活工具免费版(win7激活工具是什么意思)?

    win7激活工具免费版(win7激活工具是什么意思)?

    win7激活工具免费版(win7激活工具是什么意思)?当我们购买一台安装了Windows系统的电脑时,通常会发现系统处于未激活状态。这不仅会影响电脑的正常使用,还可能引发安全风险。因此,理解Windows系统激活的重要性,并学会如何进行系统...

  • 推广app赚佣金平台有哪些(推广app是什么工作)?

    推广app赚佣金平台有哪些(推广app是什么工作)?

    推广app赚佣金平台有哪些(推广app是什么工作)?简单来说,推广引流app就是利用各种渠道,将一款应用程序(App)推广给潜在用户,吸引他们下载并使用。推广app赚佣金平台有哪些1:U客直谈想要从事地推app拉新行业,U客直谈建议深入了解...

  • 绝地求生自瞄怎么用(绝地求生自瞄是什么原理)?

    绝地求生自瞄怎么用(绝地求生自瞄是什么原理)?

    绝地求生自瞄怎么用(绝地求生自瞄是什么原理)?绝地求生自瞄,顾名思义,就是游戏中的一种自动瞄准功能。使用自瞄外挂的玩家在游戏中,当遇到敌人时,瞄准器会自动锁定目标,玩家只需按下射击键即可轻松击杀敌人。这种外挂严重破坏了游戏的平衡,对其他玩家...

  • dnf精灵骑士是什么职业(dnf精灵骑士技能加点)?

    dnf精灵骑士是什么职业(dnf精灵骑士技能加点)?

    dnf精灵骑士是什么职业(dnf精灵骑士技能加点)?在dnf中,精灵骑士作为守护者职业的一员,以其独特的技能和风格备受玩家喜爱。下面我们来详细了解一下精灵骑士的技能加点方法。精灵骑士是DNF中的守护者职业之一,属于物理百分比纯C职业,拥有强...

  • 周排行
  • 月排行
  • 年排行

精彩推荐