Go语言并发执行函数并整合返回值:使用goroutine和channel
Go语言并发执行函数并整合返回值:使用goroutine和channel
本文将使用Go语言的goroutine和channel来实现10个并发执行函数并整合返回数据的操作。
代码示例:
package main
import "fmt"
func goFuncA(ag int) string {
return fmt.Sprintf('result of goFuncA(%d)', ag)
}
func main() {
results := make(chan string, 10)
for i := 0; i < 10; i++ {
go func(i int) {
result := goFuncA(i)
results <- result
}(i)
}
for i := 0; i < 10; i++ {
fmt.Println(<-results)
}
}
代码解析:
-
定义函数
goFuncAgoFuncA函数接收一个int类型的参数ag,并返回一个string类型的结果。
-
创建 channel
resultsresults是一个带缓冲区的 channel,缓冲区大小为 10,用于存储函数执行的结果。
-
开启 10 个 goroutine
- 使用
for循环开启 10 个 goroutine,每个 goroutine 执行goFuncA函数,并将结果通过resultschannel 传递回来。
- 使用
-
读取 channel 并打印结果
- 使用
for循环从resultschannel 中读取结果,并使用fmt.Println打印出来。
- 使用
总结:
通过上述代码,我们成功地使用 goroutine 和 channel 实现并发执行函数并整合返回数据的操作。goroutine 使得函数能够并发执行,channel 则用于不同 goroutine 之间的通信,实现数据共享。这使得程序能够更有效地利用系统资源,提高程序效率。
原文地址: https://www.cveoy.top/t/topic/l4zV 著作权归作者所有。请勿转载和采集!