Go語言的管道Channel用法

2021-09-22 06:25:57 字數 600 閱讀 8309

channel 是有型別的管道,可以用 channel 操作符

ch v :=

(「箭頭」就是資料流的方向。)

和 map 與 slice 一樣,channel 使用前必須建立:

ch := make(chan int)

預設情況下,在另一端準備好之前,傳送和接收都會阻塞。這使得 goroutine 可以在沒有明確的鎖或競態變數的情況下進行同步。

**如下:

package main

import

"fmt

"func sum(a

int, c chan int

) c

send sum to c

}func main()

c := make(chan int

) go sum(a[:len(a)/2

], c)

go sum(a[len(a)/2

:], c)

x, y :=

receive from c

fmt.println(x, y, x +y)

}

希望本文所述對大家的go語言程式設計有所幫助。

go語言 channel特點

通道擁有阻塞機制 無緩衝區 有緩衝區同理。接收端在傳送端資料傳送完成之前 通道為nil 處於阻塞狀態 傳送端在接收端資料拿走完成之前 通道為滿 處於阻塞態 1.struct 型別不佔空間,作為通道的一種訊號方式 2.chan型別為引用型別,故需要進行初始化,申請空間,在通道使用結束後close 關閉...

go 通道 go語言通道channel

通過使用通道,在多個goroutine傳送和接受共享的資料,達到資料同步的目的。通道,他有點像在兩個routine之間架設的管道,乙個goroutine可以往這個管道裡塞資料,另外乙個可以從這個管道裡取資料,有點類似於我們說的佇列。宣告乙個通道很簡單,我們使用chan關鍵字即可,除此之外,還要指定通...

Go語言學習 channel

channel俗稱管道,用於資料傳遞或資料共享,其本質是乙個先進先出的佇列,使用goroutine channel進行資料通訊簡單高效,同時也執行緒安全,多個goroutine可同時修改乙個channel,不需要加鎖。channel可分為三種型別 channel使用 定義和宣告 var readon...