交替打印

package main

import (
    "fmt"
    "sync"
)

var wg sync.WaitGroup

func main() {
    var ch = make(chan int, 0)

    wg.Add(1)
    go func() {
        defer wg.Done()
        for {
            var a, ok = <-ch
            if !ok {
                return
            }
            fmt.Println("A协程", a)
            a += 1
            if a == 101 {
                close(ch)
                return
            }
            ch <- a
        }
    }()

    wg.Add(1)
    go func() {
        ch <- 1
        defer wg.Done()
        for {
            var a, ok = <-ch
            if !ok {
                return
            }
            fmt.Println("B协程", a)
            a += 1
            if a == 101 {
                close(ch)
                break
            }
            ch <- a
        }
    }()

    wg.Wait()
}

最后更新于

这有帮助吗?