温馨提示×

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

go
小亿
107
2023-11-01 12:12:49
栏目: 编程语言

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

package main import ( "fmt" "sync" ) func processData(data int, wg *sync.WaitGroup, resultChan chan int) { defer wg.Done() // 在这里进行数据处理的逻辑,这里简单地将数据乘以2	result := data * 2 // 将处理结果发送到结果通道	resultChan <- result } func main() { // 创建一个等待组和结果通道 var wg sync.WaitGroup	resultChan := 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循环来读取结果通道中的处理结果并输出。

0