使用两个goroutine交替打印1-100
时间: 2023-09-18 19:13:03 浏览: 45
下面是使用两个 Goroutine 交替打印 1-100 的示例代码:
```
package main
import (
"fmt"
"sync"
)
func main() {
var wg sync.WaitGroup
wg.Add(2)
ch1 := make(chan int)
ch2 := make(chan int)
go func() {
defer wg.Done()
for i := 1; i <= 100; i++ {
if i%2 != 0 {
fmt.Println("Goroutine 1:", i)
ch2 <- i
} else {
ch1 <- i
}
}
}()
go func() {
defer wg.Done()
for i := 1; i <= 100; i++ {
if i%2 == 0 {
fmt.Println("Goroutine 2:", i)
ch1 <- i
} else {
ch2 <- i
}
}
}()
go func() {
defer wg.Done()
for i := 1; i <= 100; i++ {
select {
case num := <-ch1:
fmt.Println("Goroutine 1:", num)
case num := <-ch2:
fmt.Println("Goroutine 2:", num)
}
}
}()
wg.Wait()
}
```
这里使用了两个 Goroutine 分别打印奇数和偶数,并且使用缓冲通道 ch1 和 ch2 交替传递打印的数字。最后,使用一个额外的 Goroutine 从 ch1 和 ch2 中读取数字并打印出来。使用 sync.WaitGroup 来等待所有 Goroutine 完成。