烟台做网站哪家做的好,html教学网站,李宁网络营销策划方案,学校网站维护问题描述
交替打印数字和字母 使用两个 goroutine 交替打印序列#xff0c;一个 goroutine 打印数字#xff0c; 另外一个 goroutine 打印字母#xff0c; 最终效果如下#xff1a; 12AB34CD56EF78GH910IJ1112KL1314MN1516OP1718QR1920ST2122UV2324WX2526YZ2728 解题…问题描述
交替打印数字和字母 使用两个 goroutine 交替打印序列一个 goroutine 打印数字 另外一个 goroutine 打印字母 最终效果如下 12AB34CD56EF78GH910IJ1112KL1314MN1516OP1718QR1920ST2122UV2324WX2526YZ2728 解题思路
问题很简单使用 channel 来控制打印的进度。使用两个 channel 来分别控制数字和字母的打印序列 数字打印完成后通过 channel 通知字母打印, 字母打印完成后通知数字打印然后周而复始的工作。
//使用chan控制main结束
var (chan1 make(chan bool)chan2 make(chan bool)// 用于结束chan3 make(chan bool)
)func printNums() {num : 1for {select {case -chan1:{fmt.Print(num)numfmt.Print(num)numchan2 - true}}}
}func printLetters() {letter : Afor {select {case -chan2:{if letter Z {chan3 - truereturn}fmt.Print(string(letter))letterfmt.Print(string(letter))letterchan1 - true}}}
}func main() {go printNums()go printLetters()chan1 - true-chan3
}