利用协程打印下面的字符串
12AB34CD56EF78GH910IJ1112KL1314MN1516OP1718QR1920ST2122UV2324WX2526YZ2728
package main
import (
"fmt"
"sync"
)
var wg = sync.WaitGroup{}
func main() {
var number_ch = make(chan bool, 1)
var letters_ch = make(chan bool, 1)
done := make(chan struct{}) // 用于通知协程退出
// 数字打印协程
wg.Add(1)
go func() {
defer wg.Done()
i := 1
for {
select {
case <-done: // 检查退出信号
return
case <-number_ch:
fmt.Print(i)
i++
fmt.Print(i)
i++
letters_ch <- true
}
}
}()
// 字母打印协程
wg.Add(1)
go func() {
defer wg.Done()
i := 'A'
for {
select {
case <-done: // 检查退出信号
return
case <-letters_ch:
if i >= 'Z' {
close(done) // 发送退出信号
return
}
fmt.Printf("%c", i)
i++
fmt.Printf("%c", i)
i++
number_ch <- true
}
}
}()
number_ch <- true // 启动循环
wg.Wait()
}