要使用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)
}
}
運行上述代碼,即可并發地處理同樣的數據。