Golang 常⻅⾯试题⽬解析
交替打印数字和字⺟
问题描述
使⽤两个 goroutine 交替打印序列,⼀个 goroutine 打印数字, 另外⼀
个 goroutine 打印字⺟, 最终效果如下:
解题思路
问题很简单,使⽤ channel 来控制打印的进度。使⽤两个 channel ,来分别控制数字和
字⺟的打印序列, 数字打印完成后通过 channel 通知字⺟打印, 字⺟打印完成后通知数
字打印,然后周⽽复始的⼯作。
源码参考
12AB34CD56EF78GH910IJ1112KL1314MN1516OP1718QR1920ST2122UV2324WX2526YZ27281
letter,number := make(chan bool),make(chan bool)1
wait := sync.WaitGroup{}
2
3
go func() {
4
i := 1
5
for {
6
select {
7
case <-number:
8
fmt.Print(i)
9
i++
10
fmt.Print(i)
11
i++
12
letter <- true
13
break
14
default:
15
break
16
}
17
}
18
}()
19
wait.Add(1)
20
go func(wait *sync.WaitGroup) {
21
str := "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
22
23
i := 0
24
for{
25
评论0