其实说白了就是流程控制,现在有三个 goroutine
,如果控制他们顺序呢?
具体细节忘了,但好像美团面试官就是这么问的
当时没说明白,要是手写一下让面试官看下,说不定就不会挂掉了…
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| package main
import ( "fmt" "sync" )
func main() { c1 := make(chan struct{}) c2 := make(chan struct{}) group := sync.WaitGroup{} group.Add(1) go func() { fmt.Println("g1") c1 <- struct{}{} }()
go func() { <- c1 fmt.Println("g2") c2 <- struct{}{} }()
go func() { <- c2 fmt.Println("g3") group.Done() }() group.Wait() }
|