Golang交替打印奇偶数

package main

import (
	"fmt"
	"sync"
)

var wg sync.WaitGroup

func main() {
	evenCh, oddCh := make(chan bool, 1), make(chan bool, 1)
	defer close(evenCh)
	defer close(oddCh)

	wg = sync.WaitGroup{}
	wg.Add(1)

	go printNumbersSequentially(1, 10, oddCh, evenCh)

	evenCh <- true

	wg.Wait()
}

// 合并后的打印方法
func printNumbersSequentially(start, end int, oddCh, evenCh chan bool) {
	for i := start; i <= end; i++ {
		if i%2 == 0 { // 偶数
			<-oddCh
			fmt.Println(i)
			evenCh <- true
		} else { // 奇数
			<-evenCh
			fmt.Println(i)
			oddCh <- true
		}
	}

	wg.Done()
}

posted @   朝阳1  阅读(55)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示