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

avatar
作者
猴君
阅读量:1

要使用Go并发处理同样的数据,可以使用goroutine和channel来实现。

首先,创建一个函数来处理数据,该函数可以接收一个数据作为参数,并完成相应的处理。例如,可以创建一个函数来计算一个数的平方:

func calculateSquare(num int) int {     return num * num } 

接下来,在主函数中创建一个channel,用于接收处理完的数据:

result := make(chan int) 

然后,使用goroutine并发地调用处理函数,将数据作为参数传递给函数,并将处理后的结果发送到channel中:

for i := 0; i < 10; i++ {     go func(num int) {         result <- calculateSquare(num)     }(i) } 

注意,在goroutine中使用匿名函数来传递参数,以避免数据共享和竞态条件。

最后,从channel中接收处理完的数据,并打印出来:

for i := 0; i < 10; i++ {     square := <-result     fmt.Println(square) } 

完整的代码如下:

package main  import "fmt"  func calculateSquare(num int) int {     return num * num }  func main() {     result := make(chan int)      for i := 0; i < 10; i++ {         go func(num int) {             result <- calculateSquare(num)         }(i)     }      for i := 0; i < 10; i++ {         square := <-result         fmt.Println(square)     } } 

运行上述代码,即可并发地处理同样的数据。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!