我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Go语言怎么使用Gob传输数据

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Go语言怎么使用Gob传输数据

这篇文章主要讲解了“Go语言怎么使用Gob传输数据”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Go语言怎么使用Gob传输数据”吧!

为了让某个数据结构能够在网络上传输或能够保存至文件,它必须被编码然后再解码。当然已经有许多可用的编码方式了,比如 JSON、XML、Google 的 protocol buffers 等等。而现在又多了一种,由Go语言 encoding/gob 包提供的方式。

Gob 是Go语言自己以二进制形式序列化和反序列化程序数据的格式,可以在 encoding 包中找到。这种格式的数据简称为 Gob(即 Go binary 的缩写)。类似于 Python 的“pickle”和 Java 的“Serialization”。

Gob 和 JSON 的 pack 之类的方法一样,由发送端使用 Encoder 对数据结构进行编码。在接收端收到消息之后,接收端使用 Decoder 将序列化的数据变化成本地变量。

Go语言可以通过 JSON 或 Gob 来序列化 struct 对象,虽然 JSON 的序列化更为通用,但利用 Gob 编码可以实现 JSON 所不能支持的 struct 的方法序列化,利用 Gob 包序列化 struct 保存到本地也十分简单。

Gob 不是可外部定义、语言无关的编码方式,它的首选的是二进制格式,而不是像 JSON 或 XML 那样的文本格式。Gob 并不是一种不同于 Go 的语言,而是在编码和解码过程中用到了 Go 的反射。

Gob 通常用于远程方法调用参数和结果的传输,以及应用程序和机器之间的数据传输。它和 JSON 或 XML 有什么不同呢?Gob 特定的用于纯 Go 的环境中,例如两个用Go语言写的服务之间的通信。这样的话服务可以被实现得更加高效和优化。

Gob 文件或流是完全自描述的,它里面包含的所有类型都有一个对应的描述,并且都是可以用Go语言解码,而不需要了解文件的内容。

只有可导出的字段会被编码,零值会被忽略。在解码结构体的时候,只有同时匹配名称和可兼容类型的字段才会被解码。当源数据类型增加新字段后,Gob 解码客户端仍然可以以这种方式正常工作。解码客户端会继续识别以前存在的字段,并且还提供了很大的灵活性,比如在发送者看来,整数被编码成没有固定长度的可变长度,而忽略具体的 Go 类型。

假如有下面这样一个结构体 T:

type T struct { X, Y, Z int }var t = T{X: 7, Y: 0, Z: 8}

而在接收时可以用一个结构体 U 类型的变量 u 来接收这个值:

type U struct { X, Y *int8 }var u U

在接收时,X 的值是 7,Y 的值是 0(Y 的值并没有从 t 中传递过来,因为它是零值)和 JSON 的使用方式一样,Gob 使用通用的 io.Writer 接口,通过 NewEncoder() 函数创建 Encoder 对象并调用 Encode(),相反的过程使用通用的 io.Reader 接口,通过 NewDecoder() 函数创建 Decoder 对象并调用 Decode 。

创建 gob 文件

下面通过简单的示例程序来演示Go语言是如何创建 gob 文件的,代码如下所示:

package mainimport (    "encoding/gob"    "fmt"    "os")func main() {    info := map[string]string{        "name":    "编程网",        "website": "http://jb51.net/golang/",    }    name := "demo.gob"    File, _ := os.OpenFile(name, os.O_RDWR|os.O_CREATE, 0777)    defer File.Close()    enc := gob.NewEncoder(File)    if err := enc.Encode(info); err != nil {        fmt.Println(err)    }}

运行上面的代码会在当前目录下生成 demo.gob 文件,文件的内容如下所示:

0eff 8104 0102 ff82 0001 0c01 0c00 0041
ff82 0002 046e 616d 6510 43e8 afad e8a8
80e4 b8ad e696 87e7 bd91 0777 6562 7369
7465 1e68 7474 703a 2f2f 632e 6269 616e
... ...

读取 gob 文件

读取 gob 文件与创建 gob 文件同样简单,示例代码如下:

package mainimport (    "encoding/gob"    "fmt"    "os")func main() {    var M map[string]string    File, _ := os.Open("demo.gob")    D := gob.NewDecoder(File)    D.Decode(&M)    fmt.Println(M)}

运行结果如下:

go run main.go
map[name:编程网 website:http://jb51.net/golang/]

感谢各位的阅读,以上就是“Go语言怎么使用Gob传输数据”的内容了,经过本文的学习后,相信大家对Go语言怎么使用Gob传输数据这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Go语言怎么使用Gob传输数据

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Go语言使用Gob传输数据

本文主要介绍了Go语言使用Gob传输数据,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-05-14

Go语言怎么使用Gob传输数据

这篇文章主要讲解了“Go语言怎么使用Gob传输数据”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Go语言怎么使用Gob传输数据”吧!为了让某个数据结构能够在网络上传输或能够保存至文件,它必须
2023-07-05

go语言中的输入函数怎么使用

这篇“go语言中的输入函数怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“go语言中的输入函数怎么使用”文章吧。go语
2023-07-04

如何使用Go语言开发基于Websocket的实时数据传输系统

如何使用Go语言开发基于Websocket的实时数据传输系统,需要具体代码示例Websocket是一种全双工协议,它可以在不刷新页面的情况下实现实时数据传输。在现代Web应用程序中,实时数据传输是至关重要的一部分。本文将介绍如何使用Go语言
如何使用Go语言开发基于Websocket的实时数据传输系统
2023-12-18

go语言数据库中间件怎么使用

Go语言数据库中间件的使用方法有以下几个步骤:1. 引入数据库驱动包:根据所选中间件的类型,引入对应的数据库驱动包。例如,如果选择使用MySQL数据库,可以使用"github.com/go-sql-driver/mysql"包。2. 建立数
2023-10-20

怎么使用GO语言

这篇文章主要讲解了“怎么使用GO语言”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用GO语言”吧!什么是 GVMGo 语言版本管理器(GVM)是管理 Go 语言环境的开源工具。GVM
2023-06-16

怎么使用servlet向前端传输数据

使用Servlet向前端传输数据可以通过以下步骤:1. 在Servlet中获取要传输的数据,可以从数据库、文件等地方获取数据。2. 创建一个HttpServletResponse对象,该对象用于向客户端发送响应。3. 根据数据的类型,可以将
2023-08-25

go语言搭载什么数据库使用

go语言常见搭载的数据库有“MySQL”、“PostgreSQL”、“SQLite”、“MongoDB”和“Redis”五种:1、MySQL,一种开源的关系型数据库管理系统,Go语言提供了官方的MySQL驱动程序;2、PostgreSQL,
go语言搭载什么数据库使用
2023-12-18

怎么在ajax中使用json传输数据

本篇文章给大家分享的是有关怎么在ajax中使用json传输数据,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。JSON(JavaScript Object Notation) 是
2023-06-08

怎么使用Go语言实现数据转发功能

这篇文章主要介绍“怎么使用Go语言实现数据转发功能”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么使用Go语言实现数据转发功能”文章能帮助大家解决问题。首先,我们需要考虑数据实体的格式。在许多情况
2023-07-06

Go语言之init函数怎么使用

今天小编给大家分享一下Go语言之init函数怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。init函数会在main函
2023-07-02

Go语言dolphinscheduler怎么使用

这篇文章主要介绍了Go语言dolphinscheduler怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Go语言dolphinscheduler怎么使用文章都会有所收获,下面我们一起来看看吧。自动化为什
2023-07-02

go语言怎么用Protobuf做数据交换

这篇文章主要讲解了“go语言怎么用Protobuf做数据交换”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“go语言怎么用Protobuf做数据交换”吧!协议缓冲区(Protobufs)像
2023-06-16

go语言怎么连接数据库

go语言通过导入数据库驱动、建立数据库连接、执行SQL语句、使用预处理语句和事务处理处理等步骤来连接数据库。详细介绍:1、导入数据库驱动,使用github.com/go-sql-driver/mysql包来连接MySQL数据库;2、建立数据
go语言怎么连接数据库
2023-12-12

C语言怎么实现数据输入和输出

本文小编为大家详细介绍“C语言怎么实现数据输入和输出”,内容详细,步骤清晰,细节处理妥当,希望这篇“C语言怎么实现数据输入和输出”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。语句C语言的语句用来向计算机系统发出操
2023-07-02

Go语言特点及基本数据类型怎么使用

这篇文章主要介绍“Go语言特点及基本数据类型怎么使用”,在日常操作中,相信很多人在Go语言特点及基本数据类型怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Go语言特点及基本数据类型怎么使用”的疑惑有所
2023-06-29

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录