两个 goroutine 交替打印 1-100

两个 goroutine 交替打印 1-100

channel 操作

// 两个 Goroutine 交替打印 1 到 100
func main() {
	ch1, ch2 := make(chan int), make(chan int)
	done := make(chan int)

	go func() {
		for x := range ch1 {
			println("ch1: ", x)
			ch2 <- x + 1
		}
	}()
	
	go func() {
		for {
			y := <-ch2
			println("ch2: ", y)
			if y == 100 {   // 这里都出来的是 2 的倍数,所以判断是否为 100
				break
			}
			ch1 <- y + 1
		}
		close(ch1) // 谁写谁关闭
		close(done)
	}()

	ch1 <- 1

	<-done
}
  • ch1 用来打印奇数
  • ch2 用来打印偶数
  • done 用来控制程序退出
posted @   LanceZh  阅读(73)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示