mirror of
https://github.com/gopl-zh/gopl-zh.github.com.git
synced 2026-08-25 00:00:34 +08:00
Compare commits
2
Commits
6ecbba5baa
...
376c9817c7
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
376c9817c7 | ||
|
|
2ab4cbb6ac |
+1
-1
@@ -125,7 +125,7 @@ close(naturals)
|
||||
|
||||
当一个channel被关闭后,再向该channel发送数据将导致panic异常。当一个被关闭的channel中已经发送的数据都被成功接收后,后续的接收操作将不再阻塞,它们会立即返回一个零值。关闭上面例子中的naturals变量对应的channel并不能终止循环,它依然会收到一个永无休止的零值序列,然后将它们发送给打印者goroutine。
|
||||
|
||||
没有办法直接测试一个channel是否被关闭,但是接收操作有一个变体形式:它多接收一个结果,多接收的第二个结果是一个布尔值ok,ture表示成功从channels接收到值,false表示channels已经被关闭并且里面没有值可接收。使用这个特性,我们可以修改squarer函数中的循环代码,当naturals对应的channel被关闭并没有值可接收时跳出循环,并且也关闭squares对应的channel.
|
||||
没有办法直接测试一个channel是否被关闭,但是接收操作有一个变体形式:它多接收一个结果,多接收的第二个结果是一个布尔值ok,true表示成功从channels接收到值,false表示channels已经被关闭并且里面没有值可接收。使用这个特性,我们可以修改squarer函数中的循环代码,当naturals对应的channel被关闭并没有值可接收时跳出循环,并且也关闭squares对应的channel.
|
||||
|
||||
```Go
|
||||
// Squarer
|
||||
|
||||
Reference in New Issue
Block a user