软硬件开发技术笔记
测试
2024-09-25

提示

Go 的 chan(通道)是用于在 goroutine 之间进行通信的核心功能。它可以帮助你安全地传递数据并实现同步。以下是一些基本功能和用法:

  1. 声明通道
    go ch := make(chan int) // 创建一个传递 int 类型的通道

  2. 发送数据
    go ch <- 42 // 将数据 42 发送到通道 ch

  3. 接收数据
    go value := <-ch // 从通道 ch 接收数据

  4. 关闭通道
    go close(ch) // 关闭通道,表示不再发送数据

  5. 使用 for 循环接收数据
    go for value := range ch { fmt.Println(value) // 处理接收到的数据 }

  6. 通道的缓冲
    go ch := make(chan int, 5) // 创建一个缓冲区大小为 5 的通道

缓冲通道允许发送者在接收者准备好接收之前先发送一些数据。

  1. 选择语句
    你可以使用 select 来同时等待多个通道操作:
    go select { case msg1 := <-ch1: fmt.Println("Received from ch1:", msg1) case msg2 := <-ch2: fmt.Println("Received from ch2:", msg2) case ch3 <- 42: fmt.Println("Sent to ch3") default: fmt.Println("No communication") }

通道提供了强大的并发控制机制,可以有效地管理数据在不同 goroutine 之间的流动。

搜索
分类
1篇