是的,Go語言支持并發編程。Go語言的一個顯著特點就是其內置的并發支持。Go語言使用goroutines和channels來實現并發編程。
go
關鍵字即可。例如:package main
import (
"fmt"
"time"
)
func printNumbers() {
for i := 1; i <= 5; i++ {
fmt.Printf("%d ", i)
time.Sleep(1 * time.Second)
}
}
func main() {
go printNumbers()
time.Sleep(6 * time.Second)
}
在這個例子中,我們創建了一個名為printNumbers
的goroutine,它會每隔一秒打印一個數字。在main
函數中,我們通過go
關鍵字啟動了這個goroutine,并讓主線程等待6秒,以確保printNumbers
函數有足夠的時間執行。
ch := make(chan int)
這里我們創建了一個名為ch
的整數類型channel。我們可以使用<-
操作符在goroutines之間發送和接收數據。例如:
package main
import (
"fmt"
"time"
)
func sendNumbers(ch chan int) {
for i := 1; i <= 5; i++ {
ch <- i // 發送數據到channel
time.Sleep(1 * time.Second)
}
close(ch) // 關閉channel
}
func main() {
ch := make(chan int)
go sendNumbers(ch)
for num := range ch { // 從channel接收數據
fmt.Printf("%d ", num)
}
}
在這個例子中,我們創建了一個名為sendNumbers
的goroutine,它會每隔一秒發送一個數字到channel。在main
函數中,我們創建了一個channel,并啟動sendNumbers
goroutine。然后,我們使用for
循環從channel接收數據,直到channel被關閉。
Go語言的并發模型使得編寫高性能、可擴展的并發程序變得簡單而高效。