Goroutine
调用函数时前面加上go
关键字,就可以创建一个Goroutine
可以创建多个Goroutine
去执行多个函数
func main() {
go func(){
fmt.Println("hello")
}()
}
运行以上代码,会惊喜的发现你的控制台并没有打印任何东西,这是因为协程还未执行完,主进程就已经结束了
func main() {
go func(){
fmt.Println("hello")
}()
time.Sleep(1 * time.Second)
}
通过time.Sleep()
函数让主函数等待Goroutine
执行完成,这浪费的更多的时间
// 创建等待组
wg := &sync.WaitGroup{}
// 添加计数
wg.Add(1)
go func() {
fmt.Println("hello")
wg.Done()
}()
// 等待计数归零
wg.Wait()