go 单向通道
func GetCha(cha <-chan int) { //这里参数用了一个单向通道 只允许接收
for{
if v,ok := <-cha; ok{
fmt.Println(v)
}
}
//cha <- 2 这里会发生编译错误
}
func main() {
cha := make(chan int,3)
lock := make(chan struct{},1) //用通道做互斥锁
go func() {
defer func() {
close(cha) //关闭通道
lock <- struct{}{} //空结构不占用内存
}()
index := 1
for{
cha <- index
index += 1
time.Sleep(time.Second)
}
}()
go GetCha(cha)
<-lock
}
posted on 2020-04-02 18:30 ExplorerMan 阅读(267) 评论(0) 收藏 举报
浙公网安备 33010602011771号