Compare commits

...

3 Commits

Author SHA1 Message Date
Acaibrid
235b0ef0a4
Merge 24512d3625 into d14d1d0a9c 2024-06-13 19:52:12 +00:00
chai2010
d14d1d0a9c
Update index.hbs 2024-06-12 15:19:50 +08:00
Acaibrid
24512d3625
Update ch8-05.md
注明:go 1.22版本中for循环,循环变量每次都会重新创建了,而不是只是创建一次,所以闭包这里也是同样的效果
2024-02-08 07:13:01 +08:00
2 changed files with 4 additions and 2 deletions

View File

@ -72,6 +72,8 @@ for _, f := range filenames {
``` ```
回忆一下之前在5.6.1节中匿名函数中的循环变量快照问题。上面这个单独的变量f是被所有的匿名函数值所共享且会被连续的循环迭代所更新的。当新的goroutine开始执行字面函数时for循环可能已经更新了f并且开始了另一轮的迭代或者更有可能的已经结束了整个循环所以当这些goroutine开始读取f的值时它们所看到的值已经是slice的最后一个元素了。显式地添加这个参数我们能够确保使用的f是当go语句执行时的“当前”那个f。 回忆一下之前在5.6.1节中匿名函数中的循环变量快照问题。上面这个单独的变量f是被所有的匿名函数值所共享且会被连续的循环迭代所更新的。当新的goroutine开始执行字面函数时for循环可能已经更新了f并且开始了另一轮的迭代或者更有可能的已经结束了整个循环所以当这些goroutine开始读取f的值时它们所看到的值已经是slice的最后一个元素了。显式地添加这个参数我们能够确保使用的f是当go语句执行时的“当前”那个f。
注明:go 1.22版本中for循环,循环变量每次都会重新创建了,而不是只是创建一次,所以闭包这里也是同样的效果
如果我们想要从每一个worker goroutine往主goroutine中返回值时该怎么办呢当我们调用thumbnail.ImageFile创建文件失败的时候它会返回一个错误。下一个版本的makeThumbnails会返回其在做拉伸操作时接收到的第一个错误 如果我们想要从每一个worker goroutine往主goroutine中返回值时该怎么办呢当我们调用thumbnail.ImageFile创建文件失败的时候它会返回一个错误。下一个版本的makeThumbnails会返回其在做拉伸操作时接收到的第一个错误

View File

@ -186,8 +186,8 @@
<main> <main>
<!-- 头部 --> <!-- 头部 -->
<ul dir="auto"> <ul dir="auto">
<li><em>凹语言(专为 WebAssembly 设计): <a href="https://github.com/wa-lang/wa">https://github.com/wa-lang/wa</a></em></li> <li><em>Go语言圣经读书笔记(挖坑中...): <a href="https://github.com/chai2010/gopl-notes-zh">https://github.com/chai2010/gopl-notes-zh</a></em></li>
<li><em>KCL 配置语言(Rust): <a href="https://github.com/kcl-lang/kcl">https://github.com/kcl-lang/kcl</a></em></li> <li><em>凹语言(Go实现, 面向WASM设计): <a href="https://github.com/wa-lang/wa">https://github.com/wa-lang/wa</a></em></li>
</ul> </ul>
<hr> <hr>