Golang函数中使用通道进行并发通信的代码示例

2025-01-09 03:45:21   小编

Golang函数中使用通道进行并发通信的代码示例

在Go语言中,通道(channel)是一种强大的并发通信机制,它允许不同的Goroutine之间进行安全的数据传递和同步。本文将通过具体的代码示例展示如何在Golang函数中使用通道进行并发通信。

我们来看一个简单的示例,计算两个数的和与积。以下是代码实现:

package main

import "fmt"

func sumAndProduct(a, b int, resultChan chan []int) {
    sum := a + b
    product := a * b
    result := []int{sum, product}
    resultChan <- result
}

func main() {
    a := 3
    b := 5
    resultChan := make(chan []int)

    go sumAndProduct(a, b, resultChan)

    result := <-resultChan
    fmt.Printf("两数之和为:%d,两数之积为:%d\n", result[0], result[1])

    close(resultChan)
}

在上述代码中,我们定义了一个sumAndProduct函数,它接受两个整数参数ab,以及一个通道resultChan。在函数内部,计算两数之和与积,并将结果放入一个切片中,然后通过通道发送出去。

main函数中,我们创建了一个通道resultChan,然后启动一个新的Goroutine来执行sumAndProduct函数。接着,从通道中接收结果并打印。最后,关闭通道。

再看一个生产者-消费者模式的示例:

package main

import "fmt"

func producer(ch chan int) {
    for i := 0; i < 5; i++ {
        ch <- i
    }
    close(ch)
}

func consumer(ch chan int) {
    for num := range ch {
        fmt.Println(num)
    }
}

func main() {
    ch := make(chan int)
    go producer(ch)
    consumer(ch)
}

在这个示例中,producer函数向通道中发送数据,consumer函数从通道中接收数据并打印。

通过这些代码示例,我们可以看到在Golang函数中使用通道进行并发通信的便捷性和高效性,它能帮助我们更好地处理并发任务。

TAGS: Golang 函数 通道 并发通信

欢迎使用万千站长工具!

Welcome to www.zzTool.com