Skip to content

Commit

Permalink
Update ch8-05.md
Browse files Browse the repository at this point in the history
注明:go 1.22版本中for循环,循环变量每次都会重新创建了,而不是只是创建一次,所以闭包这里也是同样的效果
  • Loading branch information
A-caibird authored Feb 7, 2024
1 parent feac38b commit 24512d3
Showing 1 changed file with 2 additions and 0 deletions.
2 changes: 2 additions & 0 deletions ch8/ch8-05.md
Original file line number Diff line number Diff line change
Expand Up @@ -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会返回其在做拉伸操作时接收到的第一个错误:

Expand Down

0 comments on commit 24512d3

Please sign in to comment.