主题
通道的读写与关闭
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)
}
正确读写与关闭通道,避免数据丢失和程序崩溃。