Home >Backend Development >Golang >How does golang function communicate with goroutine through channel?

How does golang function communicate with goroutine through channel?

PHPz
PHPzOriginal
2024-05-01 21:42:02967browse

Channel and goroutine communication are used in Go language. After creating a channel, goroutine can send and receive data to the channel through the

How does golang function communicate with goroutine through channel?

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 the make 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 value 42 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 variable v.

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!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn