Channel and goroutine communication are used in Go language. After creating a channel, goroutine can send and receive data to the channel through the
In the Go language, channels are used to communicate with goroutines
In the Go language, channels are used to communicate between goroutines A concurrency mechanism. It allows goroutines to exchange data among different threads, enabling high-performance concurrent programming.
Create channel
To create a channel, you can use themake
function:
ch := make(chan int)
make
The first parameter of the function specifies the data type of the channel. In the above example, we created an integer channel.
Send data
To send data to the channel, you can use the<-
operator:
ch <- 42
This will The value42
is sent to the channel.
Receive data
To receive data from the channel, you can use the<-
operator:
v := <- ch
This will Receives a value in the channel and stores it in the variablev
.
Practical Case
The following is a practical case that shows how to use channel to let goroutine send data to the main thread:
package main import ( "fmt" "sync" ) func main() { var wg sync.WaitGroup ch := make(chan int) // 启动一个 goroutine 来向 channel 发送数据 wg.Add(1) go func() { defer wg.Done() for i := 0; i < 10; i++ { ch <- i } close(ch) // 关闭 channel 以表示发送完成 }() // 从 channel 中接收数据并打印 for v := range ch { fmt.Println(v) } wg.Wait() // 等待 goroutine 完成 }
In this example , we create a goroutine that sends 10 values (0 to 9) to the channel. The main goroutine receives data from the channel and prints it.close(ch)
statement is used to close the channel, indicating that the goroutine has sent all data.
By using channels, we can easily let goroutines exchange data in different threads, thereby achieving efficient concurrent programming.
The above is the detailed content of How does golang function communicate with goroutine through channel?. For more information, please follow other related articles on the PHP Chinese website!