阅读量: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) } }
运行上述代码,即可并发地处理同样的数据。