首頁  >  文章  >  後端開發  >  golang channel有什麼好處

golang channel有什麼好處

(*-*)浩
(*-*)浩原創
2019-12-03 09:47:033162瀏覽

golang channel有什麼好處

golang channel這種方式的優點是透過提供原子的通訊原語,避免了競態情形(race condition)下複雜的鎖定機制。

channel

channel 是可以讓一個 goroutine 發送特定值到另一個 gouroutine 的通訊機制。        (建議學習:go

#可以理解為某種類型的值傳遞的導管,而這種在 channel 中傳遞的類型成為 channle 的 element type 元素類型。

一個使用make創建的,對資料結構的引用,當channel 作為參數使用時,實際上是傳引用調用

channel 的零值: nil

channel 可以看成一個FIFO 佇列,對FIFO 佇列的讀寫都是原子的操作,不需要加鎖。 對channel 的操作行為結果總結如下:

golang channel有什麼好處

讀取一個已關閉的channel 時,總是能讀取到對應類型的零值,為了和讀取非空未關閉channel 的行為區別,可以使用兩個接收值:

// ok is false when ch is closedv, ok := <-ch

golang 中大部分類型都是值類型(只有slice / channel / map 是引用類型),讀/寫類型是值類型的channel 時,如果元素size 比較大時,應該使用指標代替,避免頻繁的記憶體拷貝開銷。

以上是golang channel有什麼好處的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn