go入门教程- 版本 4 - 用 JSON 持久化存储

  1. 版本 4 - 用 JSON 持久化存储
  2. 19.7 以 json 格式存储
    1. 链接

版本 4 - 用 JSON 持久化存储

第 4 个版本的代码 goto_v4goto_v4

19.7 以 json 格式存储

如果你是个敏锐的测试者也许已经注意到了,当 goto 程序启动 2 次,第 2 次启动后能读取短 URL 且完美地工作。然而从第 3 次开始,会得到错误:

Error loading URLStore: extra data in buffer

这是由于 gob 是基于流的协议,它不支持重新开始。为补救该问题,这里我们使用 json 作为存储协议(见 12.9 节),它以纯文本形式存储数据,因此也可以被非 Go 语言编写的进程读取。同时也显示了更换一种不同的持久化协议是多么简单,因为与存储打交道的代码被清晰地隔离在 2 个方法中,即 loadsaveLoop

从创建新的空文件 store.json 开始,更改 main.go 中声明文件名变量的那一行:

1
var dataFile = flag.String("file", "store.json", "data store file name")

在 store.go 中导入 json 取代 gob。然后在 saveLoop 中唯一需要被修改的行:

1
e := gob.NewEncoder(f)

更改为:

1
e := json.NewEncoder(f)

类似的,在 load 方法中:

1
d := gob.NewDecoder(f)

修改为:

1
d := json.NewDecoder(f)

这就是所有要改动的地方!编译,启动并测试,你会发现之前的错误不会再发生了。

链接


免责声明:本页面内容均来源于站内编辑发布,部分信息来源互联网,并不意味着本站赞同其观点或者证实其内容的真实性,如涉及版权等问题,请立即联系客服进行更改或删除,保证您的合法权益。转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。也可以邮件至 [email protected]

推荐阅读:

文章标题:go入门教程- 版本 4 - 用 JSON 持久化存储

本文作者:知识铺

发布时间:2019-10-15, 22:30:20

最后更新:2019-10-16, 21:00:36

原始链接:https://blog.zshipu.com/2019/10/15/golang/20191015/19.7/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏