Go 語言中使用 channel 和 goroutine 溝通。建立 channel 後,goroutine 可以透過
Go 語言中透過channel 與goroutine 溝通
在Go 語言中,channel 是用於在goroutine 之間溝通的一種並發機制。它允許 goroutine 在不同線程中交換數據,從而實現高效能並發編程。
建立channel
要建立一個channel,可以使用make
函數:
ch := make(chan int)
make
函數的第一個參數指定channel 的資料類型。在上面的範例中,我們建立了一個整型 channel。
傳送資料
要向channel 發送數據,可以使用<-
運算子:
ch <- 42
這會將值42
傳送到channel 中。
接收資料
要從channel 接收數據,可以使用<-
運算子:
v := <- ch
這會在channel 中接收一個值並將其儲存在變數v
中。
實戰案例
下面是一個實戰案例,展示如何使用channel 讓goroutine 向主執行緒發送資料:
package main import ( "fmt" "sync" ) func main() { var wg sync.WaitGroup ch := make(chan int) // 启动一个 goroutine 来向 channel 发送数据 wg.Add(1) go func() { defer wg.Done() for i := 0; i < 10; i++ { ch <- i } close(ch) // 关闭 channel 以表示发送完成 }() // 从 channel 中接收数据并打印 for v := range ch { fmt.Println(v) } wg.Wait() // 等待 goroutine 完成 }
在這個範例中,我們建立一個goroutine,它會向channel 發送10 個值(0 到9)。主 goroutine 從 channel 接收資料並列印它。 close(ch)
語句用於關閉 channel,表示 goroutine 已傳送所有資料。
透過使用 channel,我們可以輕鬆地讓 goroutine 在不同的執行緒中交換數據,從而實現高效的並發程式設計。
以上是golang函數如何透過channel與goroutine通訊?的詳細內容。更多資訊請關注PHP中文網其他相關文章!