主题
通道的读写与关闭
1. 通道读写
- 发送数据:
ch <- value - 接收数据:
value := <-ch
go
ch := make(chan int)
go func() {
ch <- 10
}()
val := <-ch
fmt.Println("Received:", val)2. 通道关闭
使用 close(ch) 关闭通道,表示不再发送数据。
go
close(ch)关闭通道后,不能再发送数据,否则会引发 panic。
3. 从关闭通道接收
接收关闭通道时,如果缓冲区为空,会返回零值和 false:
go
v, ok := <-ch
if !ok {
fmt.Println("Channel closed")
}ok 用于判断通道是否关闭。
4. 遍历通道
可以用 for range 遍历通道,直到通道关闭:
go
for v := range ch {
fmt.Println(v)
}正确读写与关闭通道,避免数据丢失和程序崩溃。