怎么使用go并发处理同样的数据

   2025-02-15 6040
核心提示:在Go语言中,可以使用goroutine和channel来实现并发处理同样的数据。下面是一个简单的示例:package mainimport (fmtsync)func p

在Go语言中,可以使用goroutine和channel来实现并发处理同样的数据。下面是一个简单的示例:

package mainimport ("fmt""sync")func processData(data int, wg *sync.WaitGroup, resultChan chan int) {defer wg.Done()// 在这里进行数据处理的逻辑,这里简单地将数据乘以2result := data * 2// 将处理结果发送到结果通道resultChan <- result}func main() {// 创建一个等待组和结果通道var wg sync.WaitGroupresultChan := make(chan int)data := []int{1, 2, 3, 4, 5}// 启动goroutine并发处理数据for _, d := range data {wg.Add(1)go processData(d, &wg, resultChan)}// 等待所有goroutine完成go func() {wg.Wait()close(resultChan)}()// 从结果通道中读取处理结果for result := range resultChan {fmt.Println(result)}}

在上面的示例中,首先创建了一个等待组和一个结果通道。然后,使用go关键字启动多个goroutine并发处理数据。每个goroutine都会调用processData函数进行数据处理,并将处理结果发送到结果通道。在主函数中,通过启动一个匿名goroutine来等待所有的goroutine完成,并关闭结果通道。最后,通过range resultChan循环来读取结果通道中的处理结果并输出。

 
 
更多>同类维修知识
推荐图文
推荐维修知识
点击排行
网站首页  |  关于我们  |  联系方式  |  用户协议  |  隐私政策  |  网站留言