1 个回答
channel 是 Go 的goroutine间通信和同步的核心机制,实现生产者-消费者模式的关键步骤:
声明通道:ch := make(chan Type)(可选缓冲区 make(chan Type, bufferSize))。
生产者:向通道发送数据(ch <- value),若通道已满会阻塞。
消费者:从通道接收数据(value := <-ch),若通道为空会阻塞。
关闭通道:生产者完成后关闭通道(close(ch)),消费者通过 for range ch 或 value, ok := <-ch 检测结束。
示例代码如下:func main() {
ch := make(chan int)
go func() { // 生产者
for i := 0; i < 5; i++ {
ch <- i
}
close(ch)
}()
for num := range ch { // 消费者
fmt.Println(num)
}
}
发布于:1周前 (04-22) IP属地:
我来回答
您需要 登录 后回答此问题!