技术文摘
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函数,它接受两个整数参数a和b,以及一个通道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函数中使用通道进行并发通信的便捷性和高效性,它能帮助我们更好地处理并发任务。