通道的读写与关闭
1. 通道读写
- 发送数据:
ch <- value - 接收数据:
value := <-ch
ch := make(chan int)
go func() {
ch <- 10
}()
val := <-ch
fmt.Println("Received:", val)
`
2. 通道关闭
使用 close(ch) 关闭通道,表示不再发送数据。
close(ch)
关闭通道后,不能再发送数据,否则会引发 panic。
3. 从关闭通道接收
接收关闭通道时,如果缓冲区为空,会返回零值和 false:
v, ok := <-ch
if !ok {
fmt.Println("Channel closed")
}
ok 用于判断通道是否关闭。
4. 遍历通道
可以用 for range 遍历通道,直到通道关闭:
for v := range ch {
fmt.Println(v)
}
正确读写与关闭通道,避免数据丢失和程序崩溃。
相关内容
- 什么是 Go Go 是由 Google 开发的一种开源编程语言,以简洁、高效、并发编程支持强著称,广泛应用于后端开发、云原生和微服务等领域。
- Go 的特点与适用场景 Go 语言以高并发、快速编译、简洁语法和强大标准库著称,适用于构建高性能网络服务、微服务架构和云原生应用。
- 安装 Go(Windows/Linux/macOS) 本节介绍如何在 Windows、Linux 和 macOS 上安装 Go 语言开发环境,包含安装步骤、验证方法及常见注意事项。
- 设置环境变量 本节介绍如何为 Go 语言配置环境变量,包括 GOPATH、GOROOT、PATH 等关键变量,适用于 Windows、Linux 和 macOS 系统。
- 第一个 Go 程序(Hello World) 本节将带你编写第一个 Go 程序“Hello, World”,帮助你快速了解 Go 的基础语法和程序结构。
- Go Modules 简介 本节介绍 Go Modules 的基本概念与用法,它是 Go 官方推荐的依赖管理方式,支持版本控制、依赖隔离和构建一致性。