golang两个协程交替打印出1-100
基于channel实现的,两个协程交替打印出1-100
package main
import (
"fmt"
"sync"
)
var (
toOdd = make(chan struct{})
toEven = make(chan struct{})
wg = sync.WaitGroup{}
)
func main() {
wg.Add(2)
go printOdd()
go printEven()
wg.Wait()
fmt.Println("-----done-----")
}
func printOdd() {
defer wg.Done()
for i := 1; i <= 100; i += 2 {
if i != 1 {
<-toOdd
}
fmt.Println(i)
toEven <- struct{}{}
}
}
func printEven() {
defer wg.Done()
for i := 2; i <= 100; i += 2 {
<-toEven
fmt.Println(i)
if i != 100 {
toOdd <- struct{}{}
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2021-03-08 浅谈.Net Core后端单元测试