在 Go 语言的并发编程中,sync.WaitGroup 无疑是最常用的同步原语之一。从 Go 1.0 开始,它就陪伴着我们处理各种 goroutine 同步场景。

然而,多年来我们一直沿用着固定的使用模式:

var wg sync.WaitGroup
wg.Add(1)
go func() {
    defer wg.Done()
    // 执行业务逻辑
}()
wg.Wait()