ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## 一、Go主协程如何等其余协程完再操作? Go提供了更简单的方法——使用`sync.WaitGroup`。`WaitGroup`,就是用来等待一组操作完成的。`WaitGroup`内部实现了一个计数器,用来记录未完成的操作个数. 它提供了三个方法,`Add()`用来添加计数。`Done()`用来在操作结束时调用,使计数减一。`Wait()`用来等待所有的操作结束,即计数变为0,该函数会在计数不为0时等待,在计数为0时立即返回。 应用示例: ~~~ package main import ( "fmt" "sync" ) func main() { var wg sync.WaitGroup wg.Add(2) // 因为有两个动作,所以增加2个计数 go func() { fmt.Println("Goroutine 1") wg.Done() // 操作完成,减少一个计数 }() go func() { fmt.Println("Goroutine 2") wg.Done() // 操作完成,减少一个计数 }() wg.Wait() // 等待,直到计数为0 } ~~~ 执行结果: ``` Goroutine 2 Goroutine 1 ```