一文掌握Go语言中的chan
发表时间: 2023-03-17 20:45
Golang 的 chan 是一种用于协程之间进行通信的数据类型。通常情况下,chan 可以被用于多个协程之间传递数据,其中一个协程将数据发送到 chan 中,另一个协程从 chan 中读取数据。
以下是一个简单易懂的 golang chan 的使用方法:
ch := make(chan int)
go func() { ch <- 42}()
result := <-chfmt.Println(result) // 输出:42
ch := make(chan int)go func() { for i := 0; i < 10; i++ { ch <- i }}()go func() { for { result := <-ch fmt.Println(result) }}()
在这个例子中,我们创建了一个 chan,并启动了两个协程。第一个协程向 chan 中发送 0~9 的数字,第二个协程不断地从 chan 中读取数据并打印出来。
这样,我们就能够在多个协程之间传递数据了。需要注意的是,如果没有接收方来读取 chan 中的数据,发送方会一直阻塞,直到有接收方来读取数据。如果没有发送方向 chan 中发送数据,接收方也会一直阻塞,直到有发送方来发送数据。