From b29b825ad8f29eb46e2445f3e97d6d04c6f079f7 Mon Sep 17 00:00:00 2001 From: dake Date: Sun, 1 Nov 2015 17:36:18 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A0=A1=E5=AF=B912.11?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- eBook/12.11.md | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/eBook/12.11.md b/eBook/12.11.md index 38f5ecf..72d3602 100644 --- a/eBook/12.11.md +++ b/eBook/12.11.md @@ -2,7 +2,7 @@ Gob 是 Go 自己的以二进制形式序列化和反序列化程序数据的格式;可以在 `encoding` 包中找到。这种格式的数据简称为 Gob (即 Go binary 的缩写)。类似于 Python 的 "pickle" 和 Java 的 "Serialization"。 Gob 通常用于远程方法调用(RPCs,参见 15.9 的 rpc 包)参数和结果的传输,以及应用程序和机器之间的数据传输。 -它和 JSON 或 XML 有什么不同呢?Gob 被特定地用于纯 Go 的环境中,例如两个用 Go 写的服务之间的通信。这样的话服务可以被实现得更加高效和优化。Gob 不是可外部定义,语言无关的编码方式。因此它的首选格式是二进制,而不是像 JSON 和 XML 那样的文本格式。Gob 并不是一种跟 Go 不同的语言,而是在编码和解码过程中用到了 Go 的反射。 +它和 JSON 或 XML 有什么不同呢?Gob 特定地用于纯 Go 的环境中,例如,两个用 Go 写的服务之间的通信。这样的话服务可以被实现得更加高效和优化。Gob 不是可外部定义,语言无关的编码方式。因此它的首选格式是二进制,而不是像 JSON 和 XML 那样的文本格式。Gob 并不是一种不同于 Go 的语言,而是在编码和解码过程中用到了 Go 的反射。 Gob 文件或流是完全自描述的:里面包含的所有类型都有一个对应的描述,并且总是可以用 Go 解码,而不需要了解文件的内容。 @@ -24,10 +24,13 @@ var u U ``` -在接收者中,X 的值是7,Y 的值是0(Y的值并没有从 t 中传送过来,因为它是零值) +在接收者中,X 的值是7,Y 的值是0(Y的值并没有从 t 中传递过来,因为它是零值) -和 JSON 的使用方式一样,Gob 使用通用的 `io.Writer` 接口,通过 `NewEncoder()` 函数创建 `Encoder` 对象并调用 `Encode()`;相反的过程使用通用的 `io.Reader` 接口,通过 `NewDecoder()` 函数创建 `Decoder` 对象并调用 `Decode`。我们把示例 12.12 的信息写进名为 vcard.gob 的文件作为例子。这会产生一个文本可读数据和二进制数据的混合,当你试着在文本编辑中打开的时候会看到。 +和 JSON 的使用方式一样,Gob 使用通用的 `io.Writer` 接口,通过 `NewEncoder()` 函数创建 `Encoder` 对象并调用 `Encode()`;相反的过程使用通用的 `io.Reader` 接口,通过 `NewDecoder()` 函数创建 `Decoder` 对象并调用 `Decode`。 + + +我们把示例 12.12 的信息写进名为 vcard.gob 的文件作为例子。这会产生一个文本可读数据和二进制数据的混合,当你试着在文本编辑中打开的时候会看到。 在示例 12.18 中你会看到一个编解码,并且以字节缓冲模拟网络传输的简单例子: @@ -78,7 +81,7 @@ func main() { ``` -示例 12.19[gob2.go](examples/chapter_12/gob2.go) 编码到文件: +示例 12.19 [gob2.go](examples/chapter_12/gob2.go) 编码到文件: ```go // gob2.go @@ -124,7 +127,7 @@ func main() { **练习 12.8**:[degob.go](exercises/chapter_12/degob.go): -写一个程序读取 vcard.gob 文件,编码并打印它的内容。 +写一个程序读取 vcard.gob 文件,解码并打印它的内容。 ## 链接