當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


GO Pipe用法及代碼示例

GO語言"io"包中"Pipe"函數的用法及代碼示例。

用法:

func Pipe()(*PipeReader, *PipeWriter)

Pipe 創建一個同步的內存管道。它可用於連接期望 io.Reader 的代碼和期望 io.Writer 的代碼。

管道上的讀取和寫入是一對一匹配的,除非需要多個讀取來消耗單個寫入。也就是說,對PipeWriter 的每次寫入都會阻塞,直到它滿足來自PipeReader 的一個或多個讀取,這些讀取完全消耗了寫入的數據。數據直接從Write複製到對應的Read(或Reads);沒有內部緩衝。

彼此並行或使用 Close 調用 Read 和 Write 是安全的。對 Read 的並行調用和對 Write 的並行調用也是安全的:各個調用將按順序進行門控。

例子:

package main

import (
    "fmt"
    "io"
    "log"
    "os"
)

func main() {
    r, w := io.Pipe()

    go func() {
        fmt.Fprint(w, "some io.Reader stream to be read\n")
        w.Close()
    }()

    if _, err := io.Copy(os.Stdout, r); err != nil {
        log.Fatal(err)
    }

}

輸出:

some io.Reader stream to be read

相關用法


注:本文由純淨天空篩選整理自golang.google.cn大神的英文原創作品 Pipe。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。