mirror of
https://github.com/unknwon/the-way-to-go_ZH_CN.git
synced 2025-08-11 16:09:33 +08:00
Fix syntax (#771)
* 调整了一些不太通顺的句子 * 使表达更准确,减少歧义 * 修改一个词汇 * 更新 README 和目录
This commit is contained in:
@@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
## 翻译进度
|
## 翻译进度
|
||||||
|
|
||||||
18.11 [出于性能考虑的最佳实践和建议](eBook/18.11.md)
|
19.10 [总结和增强](eBook/19.10.md)
|
||||||
|
|
||||||
## 支持本书
|
## 支持本书
|
||||||
|
|
||||||
|
@@ -78,7 +78,7 @@ for e := l.Front(); e != nil; e = e.Next() {
|
|||||||
- `runtime`: Go 程序运行时的交互操作,例如垃圾回收和协程创建。
|
- `runtime`: Go 程序运行时的交互操作,例如垃圾回收和协程创建。
|
||||||
- `reflect`: 实现通过程序运行时反射,让程序操作任意类型的变量。
|
- `reflect`: 实现通过程序运行时反射,让程序操作任意类型的变量。
|
||||||
|
|
||||||
`exp` 包中有许多将被编译为新包的实验性的包。它们将成为独立的包在下次稳定版本发布的时候。如果前一个版本已经存在了,它们将被作为过时的包被回收。然而 Go1.0 发布的时候并不包含过时或者实验性的包。
|
`exp` 包中有许多将被编译为新包的实验性的包。在下次稳定版本发布的时候,它们将成为独立的包。如果前一个版本已经存在了,它们将被作为过时的包被回收。然而 Go1.0 发布的时候并没有包含过时或者实验性的包。
|
||||||
|
|
||||||
**练习 9.1**
|
**练习 9.1**
|
||||||
|
|
||||||
|
@@ -18,7 +18,7 @@ func ReturnStr() string {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
它包含了一个整型变量 `Pack1Int` 和一个返回字符串的函数 `ReturnStr`。这段程序在运行时不做任何的事情,因为它不包含有一个 main 函数。
|
它包含了一个整型变量 `Pack1Int` 和一个返回字符串的函数 `ReturnStr`。这段程序在运行时不做任何的事情,因为它没有一个 main 函数。
|
||||||
|
|
||||||
在主程序 package_mytest.go 中这个包通过声明的方式被导入, 只到包的目录一层。
|
在主程序 package_mytest.go 中这个包通过声明的方式被导入, 只到包的目录一层。
|
||||||
|
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
# 9.8 自定义包的目录结构、go install 和 go test
|
# 9.8 自定义包的目录结构、go install 和 go test
|
||||||
|
|
||||||
为了示范,我们创建了一个名为 uc 的简单包,它含有一个 `UpperCase` 函数将字符串的所有字母转换为大写。当然这并不值得创建一个自己包,同样的功能已被包含在 `strings` 包里,但是同样的技术也可以应用在更复杂的包中。
|
为了示范,我们创建了一个名为 uc 的简单包,它含有一个 `UpperCase` 函数将字符串的所有字母转换为大写。当然这并不值得创建一个自定义包,同样的功能已被包含在 `strings` 包里,但是同样的技巧也可以应用在更复杂的包中。
|
||||||
|
|
||||||
## 9.8.1 自定义包的目录结构
|
## 9.8.1 自定义包的目录结构
|
||||||
|
|
||||||
|
@@ -108,7 +108,7 @@ func main() {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
试图 `make()` 一个结构体变量,会引发一个编译错误,这还不是太糟糕,但是 `new()` 一个映射并试图使用数据填充它,将会引发运行时错误! 因为 `new(Foo)` 返回的是一个指向 `nil` 的指针,它尚未被分配内存。所以在使用 `map` 时要特别谨慎。
|
试图 `make()` 一个结构体变量,会引发一个编译错误,这还不是太糟糕,但是 `new()` 一个 map 并试图向其填充数据,将会引发运行时错误! 因为 `new(Foo)` 返回的是一个指向 `nil` 的指针,它尚未被分配内存。所以在使用 `map` 时要特别谨慎。
|
||||||
|
|
||||||
## 链接
|
## 链接
|
||||||
|
|
||||||
|
@@ -158,7 +158,7 @@ var interfaceSlice []interface{} = dataSlice
|
|||||||
|
|
||||||
原因是它们俩在内存中的布局是不一样的(参考 [Go wiki](https://github.com/golang/go/wiki/InterfaceSlice))。
|
原因是它们俩在内存中的布局是不一样的(参考 [Go wiki](https://github.com/golang/go/wiki/InterfaceSlice))。
|
||||||
|
|
||||||
必须使用 `for-range` 语句来一个一个显式地复制:
|
必须使用 `for-range` 语句来一个一个显式地赋值:
|
||||||
|
|
||||||
```go
|
```go
|
||||||
var dataSlice []myType = FuncReturnSlice()
|
var dataSlice []myType = FuncReturnSlice()
|
||||||
@@ -252,4 +252,4 @@ func f3(x myInterface) {
|
|||||||
|
|
||||||
- [目录](directory.md)
|
- [目录](directory.md)
|
||||||
- 上一节:[第二个例子:读和写](11.8.md)
|
- 上一节:[第二个例子:读和写](11.8.md)
|
||||||
- 下一节:[对结构进行反射](11.10.md)
|
- 下一节:[反射包](11.10.md)
|
||||||
|
@@ -198,6 +198,16 @@
|
|||||||
- 18.10 [其他](18.10.md)
|
- 18.10 [其他](18.10.md)
|
||||||
- 18.11 [出于性能考虑的最佳实践和建议](18.11.md)
|
- 18.11 [出于性能考虑的最佳实践和建议](18.11.md)
|
||||||
- 第19章:构建一个完整的应用程序
|
- 第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 的使用
|
- 第20章:Go 语言在 Google App Engine 的使用
|
||||||
- 第21章:实际部署案例
|
- 第21章:实际部署案例
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user