我是 golang 的新手,我在理解 go 的 io.Pipe
时遇到了问题。这类似于 node.js 的 .pipe
吗?我应该如何使用它?是否可以将它与 1 个读取文件和一个写入文件一起使用?
提前谢谢大家。
最佳答案
不,它们并不完全相似。 io.Copy(dat io.Writer, src io.Reader)
足以读写文件,如下所示:
input := bufio.NewReader(os.Stdin)
output := bufio.NewWriter(os.Stdout) // buffer output like C stdlib
io.Copy(output, input) // copy entire file
output.Flush()
io.Pipe() (*PipeReader, *PipeWriter)
将在您拥有 时为您生成管道 Reader
和 Writer
不是他们而是代码期望他们,像这样:
type id struct{
name string
age int
}
payload := id{"John", 25}
requestBody, jsonPayload := io.Pipe()
request := http.NewRequest("POST". "http://www.example.com", requestBody) // NewRequest expect io.Reader
encoder := json.NewEncoder(jsonPayload) // NewEncoder expect io.Writer
err := encoder.Encode(payload)
response, err := client.Do(request)
关于Golang io.Pipe 与 node.js 管道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27994368/