Golang 關於通道的一些總結

2021-10-10 22:25:55 字數 544 閱讀 9087

通道分為有緩衝與無緩衝,建立方式分別為make(chan type)或make(chan type ,0) 與make(chan type ,len)。

無緩衝通道在沒有接收端或沒有傳送端的時候將會阻塞。

無緩衝通道可以完成兩個go程的同步訊息處理操作,並且無緩衝通道的接收資料會發生在喚醒放者之前。 如下圖(畫的不好見諒):

如果有緩衝通道在傳送時發現佇列已滿,則傳送方將等待直至接收方取出資料,如果隊列為空則接收方同樣等待傳送方放入資料。

for range 可以在乙個未關閉的同道中迴圈接收資料,與

for fmt.println(i) }等同,但當通道關閉時則會跳出迴圈。

select{} 將會永久阻塞,即無任何case的select 會永久阻塞

select的多個case滿足則會隨機選擇,此特點是為了防止飢餓問題。

通道為nil時傳送與接收均會阻塞,在select也會永不執行

關於stringstream的一些總結

c 標準庫中的提供了比ansi c的更高階的一些功能,即單純性 型別安全和可擴充套件性。可以使用這些庫來實現安全和自動的型別轉換。如果你已習慣了風格的轉換,也許你首先會問 為什麼要花額外的精力來學習基於的型別轉換呢?也許對下面乙個簡單的例子的回顧能夠說服你。假設你想用sprintf 函式將乙個變數從...

關於JSON的一些總結

一 關於json json是一種類似於xml的通用資料交換格式,具有比xml更高的傳輸效率.從結構上看,所有的資料 data 最終都可以分解成三種型別 第一種型別是標量 scalar 也就是乙個單獨的字串 string 或數字 numbers 比如 北京 這個單獨的詞。第二種型別是序列 sequen...

關於指標的一些總結

指標和陣列一樣,都是基於其它型別的。指標的宣告 int p updates 運算子兩邊的空格是可選的。對每個指標變數命名,都需要乙個 變數名,為取址,它的值為變數的位址 32位 指標變數,為指標儲存的位址所儲存的值。可以通過改變它來改變。malloc 可以分配記憶體,但c 更好的方法是使用new。i...