Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

waitgroups源码 #100

Open
KgsahEgx opened this issue Dec 19, 2024 · 2 comments
Open

waitgroups源码 #100

KgsahEgx opened this issue Dec 19, 2024 · 2 comments

Comments

@KgsahEgx
Copy link

https://gobyexample-cn.github.io/waitgroups

	for i := 1; i <= 5; i++ {
		wg.Add(1)

		i := i  //这里什么意思?似乎是多余的,有什么作用吗?

		go func() {
			defer wg.Done()
			worker(i)
		}()
	}
@sword-nan
Copy link

并不是多余的,如果不写这句话的话,可能第一个 goroutine 启动慢,后面 i 已经被赋了其他值,导致错误的结果

@xzdlj
Copy link

xzdlj commented Jan 1, 2025

根据 FAQ,在GO1.22 之前这行代码用来处理循环中闭包的问题。在GO1.22后循环变量的行为进行了修改,这里确实可以删除。
英文原项目中也已经删除了这行代码,见 mmcgrana/gobyexample#520

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants