golang 通道关闭样例
下面是一个简单的示例,演示如何关闭一个通道:
package main
import "fmt"
func main() {
// 创建一个整数类型的通道
ch := make(chan int)
// 开启一个 goroutine,向通道发送数据
go func() {
for i := 0; i < 5; i++ {
ch <- i
}
// 关闭通道
close(ch)
}()
// 从通道接收数据,直到通道被关闭
for n := range ch {
fmt.Println(n)
}
}
在上面的示例中,我们创建了一个整数类型的通道 ch。然后,我们开启一个 goroutine,向通道发送数据。在发送完 5 个数据后,我们通过 close(ch) 关闭了通道。
接着,我们使用 for n := range ch 的形式从通道接收数据,直到通道被关闭。在每次循环中,我们打印接收到的数据 n。
值得注意的是,当通道被关闭后,即使通道中还有未被接收的数据,我们仍然可以通过 for n := range ch 的形式从通道中读取数据。在读取完所有数据后,for n := range ch 会自动退出循环。
原文地址: https://www.cveoy.top/t/topic/NkW 著作权归作者所有。请勿转载和采集!