Go語言的管道Channel用法實例
本文實例講述了Go語言的管道Channel用法。分享給大家供大家參考。具體分析如下:
channel 是有類型的管道,可以用 channel 操作符 <- 對其發(fā)送或者接收值。
ch <- v // 將 v 送入 channel ch。
v := <-ch // 從 ch 接收,并且賦值給 v。
(“箭頭”就是數(shù)據(jù)流的方向。)
和 map 與 slice 一樣,channel 使用前必須創(chuàng)建:
ch := make(chan int)
默認情況下,在另一端準備好之前,發(fā)送和接收都會阻塞。這使得 goroutine 可以在沒有明確的鎖或競態(tài)變量的情況下進行同步。
import "fmt"
func sum(a []int, c chan int) {
sum := 0
for _, v := range a {
sum += v
}
c <- sum // send sum to c
}
func main() {
a := []int{7, 2, 8, -9, 4, 0}
c := make(chan int)
go sum(a[:len(a)/2], c)
go sum(a[len(a)/2:], c)
x, y := <-c, <-c // receive from c
fmt.Println(x, y, x + y)
}
希望本文所述對大家的Go語言程序設計有所幫助。
相關文章
go mod 安裝依賴 unkown revision問題的解決方案
這篇文章主要介紹了go mod 安裝依賴 unkown revision問題的解決方案,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-05-05
使用Golang?Validator包實現(xiàn)數(shù)據(jù)驗證詳解
在開發(fā)過程中,數(shù)據(jù)驗證是一個非常重要的環(huán)節(jié),而golang中的Validator包是一個非常常用和強大的數(shù)據(jù)驗證工具,提供了簡單易用的API和豐富的驗證規(guī)則,下面我們就來看看Validator包的具體使用吧2023-12-12

