要求:
 
- 并发两协程交替打印数字和字母。
 - 一个协程打印数字,一个协程打印字母。
 
 
输出:
 
12AB34CD56EF78GH910IJ1112KL1314MN1516OP1718QR1920ST2122UV2324WX2526YZ2728
 
思路:
 
- 两个 
channel 控制两个协程进行交替打印。 sync.WaitGroup 控制主协程等待子协程完成。
 
完整代码:
 
package mainimport ("fmt""sync"
)func main() {letter, number := make(chan bool), make(chan bool) wait := sync.WaitGroup{}                           go func() {i := 1for {select {case <-number: fmt.Print(i) i++fmt.Print(i)i++letter <- true }}}()wait.Add(1) go func() {i := 'A'for {select {case <-letter: if i >= 'Z' { wait.Done() return}fmt.Print(string(i)) i++fmt.Print(string(i))i++number <- true }}}()fmt.Println("程序先执行此句输出。")number <- true wait.Wait()    fmt.Println("\n程序最后执行此句输出。")
}