问题描述
使用两个 goroutine 交替打印序列,一个 goroutinue 打印数字, 另外一个 goroutine 打印字母, 最终效果如下 12AB34CD56EF78GH910IJ。
答案
chan_n := make(chan bool)
chan_c := make(chan bool, 1)
done := make(chan struct{})
go func() {
for i := 1; i < 11; i += 2 {
<-chan_c //这句代码起什么作用?
fmt.Print(i)
fmt.Print(i + 1)
chan_n <- true //这句是往管道里面写数据?有什么用?
}
}()
go func() {
char_seq := []string{"A","B","C","D","E","F","G","H","I","J","K"}
for i := 0; i < 10; i += 2 {
<-chan_n // ?
fmt.Print(char_seq[i])
fmt.Print(char_seq[i+1])
chan_c <- true // ?
}
done <- struct{}{} // ?
}()
chan_c <- true //?
<-done