第十九章修改 (#832)

Co-authored-by: Joe Chen <jc@unknwon.io>
This commit is contained in:
Haigang Zhou
2022-05-19 20:00:29 +08:00
committed by GitHub
parent fa1cfcc67f
commit 800466becd
9 changed files with 82 additions and 71 deletions

View File

@@ -8,14 +8,14 @@
Error loading URLStore: extra data in buffer
这是由于 gob 是基于流的协议,它不支持重新开始。为补救该问题,这里我们使用 json 作为存储协议(见 [12.9 节](12.9.md)),它以纯文本形式存储数据,因此也可以被非 Go 语言编写的进程读取。同时也显示了更换一种不同的持久化协议是多么简单,因为与存储打交道的代码被清晰地隔离在 2 个方法中,即 `load``saveLoop`
这是由于 gob 是基于流的协议,它不支持重新开始。为补救该问题,这里我们使用 json 作为存储协议(见 [12.9 节](12.9.md)),它以纯文本形式存储数据,因此也可以被非 Go 语言编写的进程读取。同时也显示了更换一种不同的持久化协议是多么简单,因为与存储打交道的代码被清晰地隔离在 2 个方法中,即 `load()``saveLoop()`
从创建新的空文件 store.json 开始,更改 main.go 中声明文件名变量的那一行:
```go
var dataFile = flag.String("file", "store.json", "data store file name")
```
在 store.go 中导入 `json` 取代 `gob`。然后在 `saveLoop` 中唯一需要被修改的行:
在 store.go 中导入 `json` 取代 `gob`。然后在 `saveLoop()` 中唯一需要被修改的行:
```go
e := gob.NewEncoder(f)
```