Go语言并发编程时goroutine和channel如何协同工作?
// 定义一个通过通道接收整数的函数
func receive(c chan int) {
num := <-c // 从通道接收数据
fmt.Println("接收到的数据:", num)
}
func main() {
// 创建一个通道
ch := make(chan int)
// 开启一个goroutine,通过通道发送数据
go func() {
ch <- 123 // 通过通道发送数据
}()
// 在主goroutine中等待接收goroutine发送的数据
receive(ch)
}
这段代码首先定义了一个通过通道接收整数的函数receive
。然后在main
函数中创建了一个通道ch
,并开启了一个新的goroutine,该goroutine通过通道发送了一个整数。最后,程序在主goroutine中调用receive
函数并传入通道ch
,从中接收数据并打印。这个例子展示了如何通过通道在goroutine之间同步数据和协作。
评论已关闭