Go语言并发编程中的通道与并发控制
1. 通道基础操作
在Go语言中,通道(channel)是一种强大的并发编程工具。当从一个已关闭的通道读取数据时,会得到该通道数据类型的零值。例如以下代码:
fmt.Println(<-ch)
运行包含上述代码的程序时,这个 for 循环可以正常工作,不会引发问题。
另外,尝试向已关闭的通道写入数据会导致程序崩溃(panic),而从已关闭的通道读取数据则会返回该通道数据类型的零值。以下是一个示例代码 readCloseCh.go :
func main() {
willClose := make(chan complex64, 10)
// Write some data to the channel
willClose <- -1
willClose <- 1i
// Read data and empty channel
<-willClose
<-willClose
close(willClose)
// Read again - this is a closed channel
read := <-willClose
fmt.Println(read)
}
运行该代码会输出 (0+0i) ,即 complex64
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



