溫馨提示×

怎么用go并發處理同樣的數據

go
小億
88
2023-10-23 15:02:43
欄目: 編程語言

要使用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)
    }
}

運行上述代碼,即可并發地處理同樣的數據。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女