在Go語言中,可以使用協程(goroutine)來并發遍歷數組或切片。下面是一個簡單的示例代碼:
package main
import (
"fmt"
"runtime"
)
func main() {
runtime.GOMAXPROCS(2) // 設置使用的CPU核心數
nums := []int{1, 2, 3, 4, 5}
// 使用協程并發遍歷數組
for i := 0; i < len(nums); i++ {
go func(idx int) {
fmt.Println(nums[idx])
}(i)
}
// 阻塞主協程,避免程序提前退出
fmt.Scanln()
}
在上面的代碼中,我們使用runtime.GOMAXPROCS(2)
來設置程序使用的CPU核心數為2,然后定義了一個包含一些整數的切片nums
。接著我們通過一個for循環遍歷數組nums
,在每一次遍歷中使用go func()
創建一個新的協程,每個協程打印數組中的某個元素。
需要注意的是,協程可能會以不同的順序執行,所以打印的結果可能不是按照數組的順序來的。此外,為了防止主協程提前退出,我們通過fmt.Scanln()
來阻塞主協程。