https://geek-docs.com/go-tutorials/go-examples/g_io-pipe-function-in-golang-with-examples.html
在Go語言中,io包提供了基本的I/O原語接口,其主要工作是封裝這些原語的正在進行的實現。Go語言中的 Pipe() 函數用於創建併發的內存管道,在將期望io.Reader的代碼與期望io.Writer的代碼鏈接時可應用此函數。在這裏,管道上的讀取和寫入一對一成對,除非需要多次“讀取”才能進行一次“寫入”。這表示,每次向管道寫入數據時,寫入PipeWriter的操作將停止,直到PipeReader從完全接收寫入的數據中滿足了一個或多個讀取操作。
然而,數據會直接從寫入傳輸到相關讀取操作中,且不進行內部緩衝。此外,這個函數是在io包中定義的。在這裏,您需要導入“io”包才能使用這些函數。
語法:
在這裏,“PipeReader”是指向PipeReader的指針。其中PipeReader是管道的讀取半部分,而“PipeWriter”是指向PipeWriter的指針。其中PipeWriter是管道的寫入半部分。
返回值: 它返回指向PipeReader和PipeWriter的指針。
注意: 同時或同時與Close調用同時調用Read和Write是安全的。然而,同時調用Read的並行調用和同時調用Write的並行調用也是安全的。單個調用將按順序關閉。
示例1:
輸出:
示例2:
輸出: