当前位置: 首页 > news >正文

golang 奇偶打印 - running

golang 奇偶打印

package mainimport ("fmt""sync"
)func main() {sli := make([]int, 100)for k := 1; k < 100; k++ {sli[k] = k}// 使用WaitGroup等待所有goroutine完成var wg sync.WaitGroupwg.Add(2)c := make(chan int)// 第一个goroutine:处理奇数索引
    go func() {defer wg.Done()for i := 0; i < len(sli); i++ {if i%2 == 1 {fmt.Println("协程1打印:", sli[i])} else {// 发送信号给第二个goroutinec <- i}}close(c) // 在发送完成后关闭通道
    }()// 第二个goroutine:处理偶数索引
    go func() {defer wg.Done()for i := range c { // 使用range从通道接收,直到通道关闭if i >= 2 && i%2 == 0 {fmt.Println("协程2打印:", sli[i])}}}()// 等待所有goroutine完成
    wg.Wait()
}