diff --git a/README.md b/README.md index 8ff654576..b3fd6423c 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ ## 翻译进度 -18.11 [出于性能考虑的最佳实践和建议](eBook/18.11.md) +19.10 [总结和增强](eBook/19.10.md) ## 支持本书 diff --git a/eBook/09.1.md b/eBook/09.1.md index b6791b0c1..542beb834 100644 --- a/eBook/09.1.md +++ b/eBook/09.1.md @@ -78,7 +78,7 @@ for e := l.Front(); e != nil; e = e.Next() { - `runtime`: Go 程序运行时的交互操作,例如垃圾回收和协程创建。 - `reflect`: 实现通过程序运行时反射,让程序操作任意类型的变量。 -`exp` 包中有许多将被编译为新包的实验性的包。它们将成为独立的包在下次稳定版本发布的时候。如果前一个版本已经存在了,它们将被作为过时的包被回收。然而 Go1.0 发布的时候并不包含过时或者实验性的包。 +`exp` 包中有许多将被编译为新包的实验性的包。在下次稳定版本发布的时候,它们将成为独立的包。如果前一个版本已经存在了,它们将被作为过时的包被回收。然而 Go1.0 发布的时候并没有包含过时或者实验性的包。 **练习 9.1** diff --git a/eBook/09.5.md b/eBook/09.5.md index 741517a91..1c63d9656 100644 --- a/eBook/09.5.md +++ b/eBook/09.5.md @@ -18,7 +18,7 @@ func ReturnStr() string { } ``` -它包含了一个整型变量 `Pack1Int` 和一个返回字符串的函数 `ReturnStr`。这段程序在运行时不做任何的事情,因为它不包含有一个 main 函数。 +它包含了一个整型变量 `Pack1Int` 和一个返回字符串的函数 `ReturnStr`。这段程序在运行时不做任何的事情,因为它没有一个 main 函数。 在主程序 package_mytest.go 中这个包通过声明的方式被导入, 只到包的目录一层。 diff --git a/eBook/09.8.md b/eBook/09.8.md index c645a691c..85177b6d5 100644 --- a/eBook/09.8.md +++ b/eBook/09.8.md @@ -1,6 +1,6 @@ # 9.8 自定义包的目录结构、go install 和 go test -为了示范,我们创建了一个名为 uc 的简单包,它含有一个 `UpperCase` 函数将字符串的所有字母转换为大写。当然这并不值得创建一个自己包,同样的功能已被包含在 `strings` 包里,但是同样的技术也可以应用在更复杂的包中。 +为了示范,我们创建了一个名为 uc 的简单包,它含有一个 `UpperCase` 函数将字符串的所有字母转换为大写。当然这并不值得创建一个自定义包,同样的功能已被包含在 `strings` 包里,但是同样的技巧也可以应用在更复杂的包中。 ## 9.8.1 自定义包的目录结构 diff --git a/eBook/10.2.md b/eBook/10.2.md index 35f90115f..1b091d837 100644 --- a/eBook/10.2.md +++ b/eBook/10.2.md @@ -108,7 +108,7 @@ func main() { } ``` -试图 `make()` 一个结构体变量,会引发一个编译错误,这还不是太糟糕,但是 `new()` 一个映射并试图使用数据填充它,将会引发运行时错误! 因为 `new(Foo)` 返回的是一个指向 `nil` 的指针,它尚未被分配内存。所以在使用 `map` 时要特别谨慎。 +试图 `make()` 一个结构体变量,会引发一个编译错误,这还不是太糟糕,但是 `new()` 一个 map 并试图向其填充数据,将会引发运行时错误! 因为 `new(Foo)` 返回的是一个指向 `nil` 的指针,它尚未被分配内存。所以在使用 `map` 时要特别谨慎。 ## 链接 diff --git a/eBook/11.9.md b/eBook/11.9.md index 461741591..08444ba80 100644 --- a/eBook/11.9.md +++ b/eBook/11.9.md @@ -158,7 +158,7 @@ var interfaceSlice []interface{} = dataSlice 原因是它们俩在内存中的布局是不一样的(参考 [Go wiki](https://github.com/golang/go/wiki/InterfaceSlice))。 -必须使用 `for-range` 语句来一个一个显式地复制: +必须使用 `for-range` 语句来一个一个显式地赋值: ```go var dataSlice []myType = FuncReturnSlice() @@ -252,4 +252,4 @@ func f3(x myInterface) { - [目录](directory.md) - 上一节:[第二个例子:读和写](11.8.md) -- 下一节:[对结构进行反射](11.10.md) +- 下一节:[反射包](11.10.md) diff --git a/eBook/directory.md b/eBook/directory.md index 2322b1ebb..b0d3a5d75 100644 --- a/eBook/directory.md +++ b/eBook/directory.md @@ -198,6 +198,16 @@ - 18.10 [其他](18.10.md) - 18.11 [出于性能考虑的最佳实践和建议](18.11.md) - 第19章:构建一个完整的应用程序 + - 19.1 [简介](19.1.md) + - 19.2 [短网址项目简介](19.2.md) + - 19.3 [数据结构](19.3.md) + - 19.4 [用户界面:web 服务端](19.4.md) + - 19.5 [持久化存储:gob](19.5.md) + - 19.6 [用协程优化性能](19.6.md) + - 19.7 [以 json 格式存储](19.7.md) + - 19.8 [多服务器处理架构](19.8.md) + - 19.9 [使用代理缓存](19.9.md) + - 19.10 [总结和增强](19.10.md) - 第20章:Go 语言在 Google App Engine 的使用 - 第21章:实际部署案例