2019年8月2日

时间:2022-01-30 19:07:36

昨晚的笔试题

使用两个goroutine交替打印序列,一个goroutinue打印数字,另一个goroutine打印字母,最终结果如下:  12AB34CD56EF78GH910IJ

分析:问题核心是如何使两个协程顺序循环调用 使用阻塞channel交互控制

连续打印两个字符则是干扰项

package main

import (
	"fmt"
)

func main() {
	c := make(chan bool)

	go func() {
		for i := 1; i < 10; i += 2 {
			fmt.Print(i)
			fmt.Print(i + 1)
			c <- true
			<-c
		}
	}()

	for i := 'A'; i < 'J'; i += 2 {
		<-c
		fmt.Printf("%c", i)
		fmt.Printf("%c", i+1)
		c <- true
	}
}