当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。