返回顶部
首页 > 资讯 > 后端开发 > GO >Go语言使用Gob传输数据
  • 626
分享到

Go语言使用Gob传输数据

Go语言Gob传输数据Go语言传输数据 2023-05-14 08:05:17 626人浏览 独家记忆
摘要

目录创建 Gob 文件读取 gob 文件为了让某个数据结构能够在网络上传输或能够保存至文件,它必须被编码然后再解码。当然已经有许多可用的编码方式了,比如 JSON、XML、Googl

为了让某个数据结构能够在网络上传输或能够保存至文件,它必须被编码然后再解码。当然已经有许多可用的编码方式了,比如 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 main
import (
    "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 main
import (
    "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传输数据内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

您可能感兴趣的文档:

--结束END--

本文标题: Go语言使用Gob传输数据

本文链接: https://lsjlt.com/news/202914.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Go语言使用Gob传输数据
    目录创建 gob 文件读取 gob 文件为了让某个数据结构能够在网络上传输或能够保存至文件,它必须被编码然后再解码。当然已经有许多可用的编码方式了,比如 JSON、XML、Googl...
    99+
    2023-05-14
    Go语言 Gob传输数据 Go语言 传输数据
  • Go语言怎么使用Gob传输数据
    这篇文章主要讲解了“Go语言怎么使用Gob传输数据”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Go语言怎么使用Gob传输数据”吧!为了让某个数据结构能够在网络上传输或能够保存至文件,它必须...
    99+
    2023-07-05
  • 如何使用Go语言开发基于Websocket的实时数据传输系统
    如何使用Go语言开发基于Websocket的实时数据传输系统,需要具体代码示例Websocket是一种全双工协议,它可以在不刷新页面的情况下实现实时数据传输。在现代Web应用程序中,实时数据传输是至关重要的一部分。本文将介绍如何使用Go语言...
    99+
    2023-12-18
    Go语言 websocket 实时数据传输
  • go语言中的输入函数怎么使用
    这篇“go语言中的输入函数怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“go语言中的输入函数怎么使用”文章吧。go语...
    99+
    2023-07-04
  • Go语言参数传递是传值还是传引用
    目录什么是传值(值传递)什么是传引用(引用传递)迷惑Mapchan类型和map、chan都不一样的slice小结对于了解一门语言来说,会关心我们在函数调用的时候,参数到底是传的...
    99+
    2022-06-07
    GO 参数 go语言
  • 数据传输 | dtle 使用初探
    作者:马莹乐 爱可生研发团队成员,负责 mysql 中间件和数据库管理平台的测试。擅长找茬(测试技术爱好者),欢迎大家试用 dtle~ 本文来源:原创投稿 *爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。 ...
    99+
    2019-08-17
    数据传输 | dtle 使用初探
  • 如何使用Go语言处理大数据?
    Go语言是一种非常流行的编程语言,它的特点是简洁、高效、易于学习和使用。在处理大数据时,Go语言的高性能和并发性能使其成为一种优秀的选择。在本文中,我们将讨论如何使用Go语言处理大数据。 一、Go语言处理大数据的基础知识 在开始介绍Go语...
    99+
    2023-06-26
    响应 大数据 numpy
  • go语言搭载什么数据库使用
    go语言常见搭载的数据库有“MySQL”、“PostgreSQL”、“SQLite”、“MongoDB”和“Redis”五种:1、MySQL,一种开源的关系型数据库管理系统,Go语言提供了官方的MySQL驱动程序;2、PostgreSQL,...
    99+
    2023-12-18
    go语言 Golang
  • Go语言使用GORM操作数据库使用指南
    目录简介安装 GORM连接到数据库定义模型自动迁移基本 CRUD 操作插入记录查询记录更新记录删除记录详细api详解1. 查询2. 插入3. 更新4. 删除总结简介 GORM(全称为...
    99+
    2023-05-20
    Go语言 GORM操作数据库 Go语言 操作数据库 Go GORM 数据库 Go语言 GORM
  • python使用tcp传输图片数据
    本文实例为大家分享了python使用tcp传输图片数据的具体代码,供大家参考,具体内容如下 数据包格式如下 客户端: import socket import sys HOST,PORT = "172.18...
    99+
    2022-06-02
    python tcp传输图片数据 python传输数据 python传输图片数据
  • go语言数据库中间件怎么使用
    Go语言数据库中间件的使用方法有以下几个步骤:1. 引入数据库驱动包:根据所选中间件的类型,引入对应的数据库驱动包。例如,如果选择使...
    99+
    2023-10-20
    go语言 数据库
  • 如何使用GO语言存储数据类型?
    GO语言是一种非常流行的开发语言,它的速度非常快,可以用于开发高性能应用程序。但是,GO语言的强大并不仅限于速度,它还有很多其他的特性,比如存储数据类型。在本文中,我们将介绍如何使用GO语言存储不同类型的数据,并提供一些实际的演示代码。 一...
    99+
    2023-11-12
    数据类型 存储 javascript
  • Go语言标准输入输出库的基本使用教程
    目录fmt输出PrintFprintSprintErrorf输入ScanScanfScanln总结fmt fmt是go语言中的格式化输入输出库,其中主要分为两个部分,分别是输出部分和...
    99+
    2024-04-02
  • 利用Go语言实现不同数据类型的输出操作
    标题:利用Go语言实现不同数据类型的输出操作 Go语言作为一种简洁、高效的编程语言,提供了丰富的标准库,能够方便地操作不同数据类型并进行输出。本文将介绍如何利用Go语言实现对不同数据类...
    99+
    2024-03-15
    go语言输出数据 数据类型输出 不同数据输出 go语言 标准库
  • 如何使用 GO 语言的数据类型来处理自然语言?
    GO 语言是一种开源的编程语言,它具有高效性、可靠性、可扩展性等优点,目前在互联网领域得到了广泛的应用。在自然语言处理方面,GO 语言提供了丰富的数据类型和操作方法,可以帮助开发者轻松地处理文本数据。本文将介绍如何使用 GO 语言的数据类型...
    99+
    2023-10-30
    数据类型 自然语言处理 load
  • 使用PHP和Redis进行数据传输
    随着数据处理量的不断增加,如何高效地进行数据传输已成为许多企业面临的挑战。在此背景下,PHP和Redis的组合,成为了一种可行的数据处理解决方案。本文将介绍如何使用PHP和Redis进行数据传输,以及它的优势和适用场景。一、什么是Redis...
    99+
    2023-05-15
    PHP redis 数据传输
  • 如何在Go语言中使用Windows数据类型?
    在Go语言中,我们经常需要和Windows操作系统进行交互,因为很多系统级别的操作都需要使用Windows数据类型。在本文中,我们将介绍如何在Go语言中使用Windows数据类型。 一、了解Windows数据类型 Windows操作系统中有...
    99+
    2023-09-12
    windows 数据类型 关键字
  • 如何在GO语言中使用JavaScript数据类型?
    GO语言是一种非常流行的编程语言,它有着非常广泛的应用场景。在开发过程中,我们可能需要使用JavaScript数据类型。那么,如何在GO语言中使用JavaScript数据类型呢?本文将为您详细介绍。 一、GO语言中的JavaScript数据...
    99+
    2023-11-13
    数据类型 缓存 javascript
  • 如何使用Go语言进行大数据处理?
    使用Go语言进行大数据处理的方法有安装Go语言环境、编写数据处理程序、读取和处理数据、并发处理、写入输出结果等。详细介绍:1、安装Go语言环境:首先,需要在你的计算机上安装Go语言环境。可以从Go官方网站下载并安装适合你操作系统的版本;2、...
    99+
    2023-12-21
    go语言 大数据处理
  • 入门指南:使用Go语言处理大数据
    Go语言作为一种开源编程语言,在近年来逐渐受到了广泛的关注和使用。它以其简洁、高效的特性,以及强大的并发处理能力而备受程序员青睐。在大数据处理领域中,Go语言也具有很强的潜力,可以用来...
    99+
    2024-02-25
    大数据 go语言 数据处理
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作