8.每日LeetCode-笔试题,交替打印数字和字母

 代码地址:interview-go: Go高级面试总结

问题描述

​​​交替打印数字和字母
使用两个 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 := 1
	for {
		select {
		case <-chan1:
			{
				fmt.Print(num)
				num++
				fmt.Print(num)
				num++
				chan2 <- true
			}
		}
	}
}

func printLetters() {
	letter := 'A'
	for {
		select {
		case <-chan2:
			{
				if letter >

你可能感兴趣的:(数据结构和算法,leetcode,算法)