Go channel 基本語法
阿新 • • 發佈:2018-11-17
channel的基本語法比較簡單, 一般的宣告格式是:
定義格式如下:
1 ch := make(chan int)
還有一個最常用的就是寫入和讀出,當你向channel寫入資料時會導致程式阻塞,直到有其他goroutine從這個channel中讀取資料,
同理如果channel之前沒有寫入過資料,那麼從channel中讀取資料也會導致程式阻塞,直到這個channel中被寫入了資料為止
1 ch <- value //寫入
2 value := <-ch //讀取
關閉channel
close(ch)
判斷channel是否關閉(利用多返回值的方式):
1 b, status := <-ch
帶緩衝的channel
說起來也容易,之前我們使用的都是不帶緩衝的channel,這種方法適用於單個數據的情況,對於大量的資料不太實用,在呼叫make()的時候將緩衝區大小作為第二個引數傳入就可以建立緩衝的channel,即使沒有讀取方,寫入方也可以一直往channel裡寫入,在緩衝區被填完之前都不會阻塞。
c := make(chan int, 1024)
單項channel
單向channel只能用於寫入或者讀取資料。
channel本身必然是同時支援讀寫的,否則根本沒法用。所謂的單向channel概念,其實只是對channel的一種使用限制。
單向channel變數的宣告:
1 var ch1 chan int // ch1是一個正常的channel
2 var ch2 <-chan int // ch2是單向channel,只用於讀取int資料
單項channel的初始化
1 ch3 := make(chan int)
2 ch4 := <-chan int(ch3) // ch4是一個單向的讀取channel