channel close

139 阅读1分钟
package main

import (

    "fmt"

    "time"

)

func read(ch1 <-chan int) { //定义只能读的channel

    for {

        fmt.Printf("read a int is %d\n", <-ch1)

    }

}

func write(ch chan<- int) { //定义只能写的channel

    for i := 0; i < 10; i++ {

        ch <- i

    }

    close(ch) //如果 chan 不为 nil,chan 也没有 closed,就把等待队列中的 sender(writer)和 receiver(reader)从队列中全部移除并唤醒。

}


func main() {

    ch1 := make(chan int)
    
    go write(ch1)

    go read(ch1)

    time.Sleep(3 * time.Second)
}