今天学习了协程的概念(感觉应该像是并发的意思)
Goroutine是Go运行时管理的轻量级线程,在Go中,开启一个协程是非常简单的。
Var wait waitGroup的用法:

用全局变量:
package main
import (
"fmt"
"sync"
"time"
)
var wait sync.WaitGroup
func shopping(name string) {
fmt.Printf("%s 开始购物\\n", name)
//时间延时1s
time.Sleep(1 * time.Second)
fmt.Printf("%s 购物结束\\n", name)
wait.Done()
}
// 协程
func main() {
//拿到现在的时间
startTime := time.Now()
//现在的模式是购物接力
// shopping("瞪眼")
// shopping("小丸音")
// shopping("瞪眼小丸音")
wait.Add(3)
//加上go的关键字,可以让他们同时进行,主线程结束,协程函数也会跟着结束
go shopping("瞪眼")
go shopping("小丸音")
go shopping("瞪眼小丸音")
wait.Wait()
fmt.Println("购买完成", time.Since(startTime))
}
用局部变量:
package main
import (
"fmt"
"sync"
"time"
)
func shopping(name string, wait *sync.WaitGroup) {
fmt.Printf("%s 开始购物\\n", name)
//时间延时1s
time.Sleep(1 * time.Second)
fmt.Printf("%s 购物结束\\n", name)
wait.Done()
}
// 协程
func main() {
var wait sync.WaitGroup
//拿到现在的时间
startTime := time.Now()
//现在的模式是购物接力
// shopping("瞪眼")
// shopping("小丸音")
// shopping("瞪眼小丸音")
wait.Add(3)
//加上go的关键字,可以让他们同时进行,主线程结束,协程函数也会跟着结束
go shopping("瞪眼", &wait)
go shopping("小丸音", &wait)
go shopping("瞪眼小丸音", &wait)
wait.Wait()
fmt.Println("购买完成", time.Since(startTime))
}
以上记录纯属自身学习,欢迎大家给出意见,一起进步!



