在Go语言中,channel 是一种内置的数据结构,用于在不同的goroutine之间进行通信。它是一个非常强大的并发工具,可以实现各种并发模式和同步机制。以下是一些Go语言中channel的高级用法:
1. Buffered Channels
带缓冲的channel可以在没有接收者的情况下发送数据,数据会被存储在channel的缓冲区中。这可以避免在发送和接收操作不匹配时发生的死锁。
ch := make(chan int, 5) // 创建一个能存储5个int类型数据的缓冲channel
go func() {
ch <- 1 // 发送数据到channel
}()
value := <-ch // 从channel接收数据
2. Select
select
语句可以用来等待多个channel操作,它会阻塞直到其中一个channel操作可以进行。这类似于switch
语句,但是用于channel之间的选择。
c1 := make(chan int)
c2 := make(chan int)
for {
select {
case msg1 := <-c1:
fmt.Println("Received from c1:", msg1)
case c2 <- 23:
fmt.Println
标签:ch,进阶,int,make,chan,channel,Go,Channel
From: https://blog.csdn.net/weixin_39801169/article/details/137461818