在前面介紹的goroutine,用go指令啟動後,
我們的Main()尚未能進行較細的控制.
今天介紹sync package,來對gorutine做一些控制.
來看油達大師vs玉面飛鷹,油達大師能夠砍到玉面飛鷹嗎??
// hello72
package main
import (
"fmt"
"sync"
)
func main() {
var wg sync.WaitGroup
wg.Add(2)
fmt.Println("Start Goroutines!")
go func() {
defer wg.Done()
fmt.Println("油達大師出招!")
}()
go func() {
defer wg.Done()
fmt.Println("玉面飛鷹起飛!")
}()
fmt.Println("Waiting To Finish")
wg.Wait()
fmt.Println("Done!")
}
執行結果:
./hello72
Start Goroutines!
Waiting To Finish
油達大師出招!
玉面飛鷹起飛!
Done!
看來是油達大師先出招啊~~~~
不過油達大師大概心地善良,並未把玉面飛鷹砍了~~~~