通道的读写与关闭

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)
}

正确读写与关闭通道,避免数据丢失和程序崩溃。