利用 golang 實現并發編程:創建 goroutine:使用 go 關鍵字創建輕量級線程 goroutine。使用通道:通道是 goroutine 間通信的數據結構,可發送和接收值。實戰案例:并行計算:創建 goroutine 數組并行計算數字和,顯著提升計算性能。
利用 Golang 函數實現并發編程
在 Golang 中,并發性是通過 goroutine 和通道實現的。goroutine 是輕量級的線程,通道是用于 goroutine 之間通信的機制。
創建 goroutine
使用 go 關鍵字創建 goroutine。這將創建一個新的goroutine,并同時執行函數。
func main() {
// 創建一個打印"Hello, world!"的goroutine
go fmt.Println("Hello, world!")
}
登錄后復制
通道
通道是一種用于 goroutine 之間通信的數據結構。它可以發送和接收值。
// 創建一個發送字符串到通道的goroutine
func send(ch chan string) {
ch <- "Hello, channel!"
}
// 創建一個接收通道中字符串的goroutine
func receive(ch chan string) {
fmt.Println(<-ch)
}
登錄后復制
實戰案例:并行計算
我們使用并發性來并行計算一組數字的和。我們創建一個 goroutine 數組,每個 goroutine 負責計算數組一部分的和。
func main() {
// 創建要計算和的數組
nums := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
// 創建goroutine通道
var ch = make(chan int)
// 創建goroutine數組,每個goroutine負責計算數組一部分的和
for i := 0; i < len(nums); i++ {
go func(i int) {
sum := 0
for j := i; j < len(nums); j++ {
sum += nums[j]
}
ch <- sum
}(i)
}
// 從goroutine接收結果并求和
totalSum := 0
for i := 0; i < len(nums); i++ {
totalSum += <-ch
}
fmt.Println("Total sum:", totalSum)
}
登錄后復制
通過使用并發性,我們可以顯著提高計算和的性能。






