chan通信

2018-12-07  本文已影响0人  bocsoft
package main

import "fmt"

func main() {
    intChan := make(chan int, 10)
    for i := 0; i < 10; i++ {
        intChan <- i
    }
    close(intChan)
    //同步信号
    syncChan := make(chan struct{}, 1)
    go func() {
    Loop:
        for {
            select {
            case e, ok := <-intChan:
                if !ok {
                    fmt.Println("End.")
                    break Loop
                }
                fmt.Printf("Received: %v\n", e)
            }
        }
        syncChan <- struct{}{} //同步信号
    }()

    <-syncChan

}

/*
输出结果:
Received: 0
Received: 1
Received: 2
Received: 3
Received: 4
Received: 5
Received: 6
Received: 7
Received: 8
Received: 9
End.
 */



上一篇 下一篇

猜你喜欢

热点阅读