Compare commits

...

5 Commits

Author SHA1 Message Date
Xargin
b93c7185c8 Merge pull request #102 from go-cc/master
Update ch1-06.md for the "interleaving" 并发教程的翻译问题
2022-03-26 22:57:30 +08:00
Xargin
3589f17b08 Merge pull request #101 from HugePages/patch-1
修改代码排版
2022-03-26 22:56:58 +08:00
suntong
693872d890 Update ch4-03.md
Fix typo of `hasEdge`
2022-03-25 14:48:12 -04:00
suntong
40c4fa9928 Update ch1-06.md
See https://github.com/golang-china/gopl-zh/issues/60
2022-03-25 12:40:21 -04:00
张羽
a581948d2c 修改代码排版 2022-03-02 10:52:33 +08:00
3 changed files with 3 additions and 3 deletions

View File

@@ -63,7 +63,7 @@ goroutine是一种函数的并发执行方式而channel是用来在goroutine
main函数中用make函数创建了一个传递string类型参数的channel对每一个命令行参数我们都用go这个关键字来创建一个goroutine并且让函数在这个goroutine异步执行http.Get方法。这个程序里的io.Copy会把响应的Body内容拷贝到ioutil.Discard输出流中译注可以把这个变量看作一个垃圾桶可以向里面写一些不需要的数据因为我们需要这个方法返回的字节数但是又不想要其内容。每当请求返回内容时fetch函数都会往ch这个channel里写入一个字符串由main函数里的第二个for循环来处理并打印channel里的这个字符串。
当一个goroutine尝试在一个channel上做send或者receive操作时这个goroutine会阻塞在调用处直到另一个goroutine从这个channel里接收或者写入值这样两个goroutine才会继续执行channel操作之后的逻辑。在这个例子中每一个fetch函数在执行时都会往channel里发送一个值ch <- expression主函数负责接收这些值<-ch)。这个程序中我们用main函数来接收所有fetch函数传回的字符串可以避免goroutine异步执行还没有完成时main函数提前退出
当一个goroutine尝试在一个channel上做send或者receive操作时这个goroutine会阻塞在调用处直到另一个goroutine从这个channel里接收或者写入值这样两个goroutine才会继续执行channel操作之后的逻辑。在这个例子中每一个fetch函数在执行时都会往channel里发送一个值ch <- expression主函数负责接收这些值<-ch)。这个程序中我们用main函数来完整地处理/接收所有fetch函数传回的字符串可以避免因为有两个goroutine同时完成而使得其输出交错在一起的危险
**练习 1.10** 找一个数据量比较大的网站用本小节中的程序调研网站的缓存策略对每个URL执行两遍请求查看两次时间是否有较大的差别并且每次获取到的响应内容是否一致修改本节中的程序将响应结果输出到文件以便于进行对比

View File

@@ -284,7 +284,7 @@ func hasEdge(from, to string) bool {
}
```
其中addEdge函数惰性初始化map是一个惯用方式也就是说在每个值首次作为key时才初始化。addEdge函数显示了如何让map的零值也能正常工作即使from到to的边不存在graph[from][to]依然可以返回一个有意义的结果。
其中addEdge函数惰性初始化map是一个惯用方式也就是说在每个值首次作为key时才初始化。hasEdge函数显示了如何让map的零值也能正常工作即使from到to的边不存在graph[from][to]依然可以返回一个有意义的结果。
**练习 4.8** 修改charcount程序使用unicode.IsLetter等相关的函数统计字母、数字等Unicode中不同的字符类别。