mirror of
https://github.com/gopl-zh/gopl-zh.github.com.git
synced 2024-11-24 07:14:47 +00:00
Compare commits
2 Commits
235b0ef0a4
...
023527e229
Author | SHA1 | Date | |
---|---|---|---|
|
023527e229 | ||
|
24512d3625 |
@ -72,6 +72,8 @@ for _, f := range filenames {
|
||||
```
|
||||
|
||||
回忆一下之前在5.6.1节中,匿名函数中的循环变量快照问题。上面这个单独的变量f是被所有的匿名函数值所共享,且会被连续的循环迭代所更新的。当新的goroutine开始执行字面函数时,for循环可能已经更新了f并且开始了另一轮的迭代或者(更有可能的)已经结束了整个循环,所以当这些goroutine开始读取f的值时,它们所看到的值已经是slice的最后一个元素了。显式地添加这个参数,我们能够确保使用的f是当go语句执行时的“当前”那个f。
|
||||
注明:go 1.22版本中for循环,循环变量每次都会重新创建了,而不是只是创建一次,所以闭包这里也是同样的效果
|
||||
|
||||
|
||||
如果我们想要从每一个worker goroutine往主goroutine中返回值时该怎么办呢?当我们调用thumbnail.ImageFile创建文件失败的时候,它会返回一个错误。下一个版本的makeThumbnails会返回其在做拉伸操作时接收到的第一个错误:
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user