报告常见的使用 wg.Add(1)WaitGroup 模式,启动 goroutine,并推迟 wg.Done()

在 Go 1.25 及更高版本中,(*sync.WaitGroup).Go(func()) 将这些步骤合并为一个调用。 这会将 goroutine 启动和 WaitGroup 计数结合在一起,并减少样板代码。

示例:


func Fanout(tasks []func()) {
	var wg sync.WaitGroup
	for _, task := range tasks {
		wg.Add(1)
		go func() {
			defer wg.Done()
			task()
		}()
	}
	wg.Wait()
}

要修正代码,请使用使用 WaitGroup.Go 进行简化快速修复。

在应用快速修复后:


func Fanout(tasks []func()) {
	var wg sync.WaitGroup
	for _, task := range tasks {
		wg.Go(func() {
			task()
		})
	}
	wg.Wait()
}