如何使用管道在Go中编写`cat`

我在cat下面有一个Unix工具的实现。它将多个字节从中读取os.Stdin到缓冲区中,然后将这些字节写出到中os.Stdout。有没有一种方法可以跳过缓冲区,而Stdin直接将其传递给Stdout?


package main


import "os"

import "io"


func main() {

    buf := make([]byte, 1024)


    var n int

    var err error

    for err != io.EOF {

        n, err = os.Stdin.Read(buf)


        if n > 0 {

            os.Stdout.Write(buf[0:n])

        }

    }

}


白衣染霜花
浏览 211回答 2
2回答

收到一只叮咚

您可以使用io.Copy() (此处的文档)例子:package mainimport (    "os"    "io"    "log")func main() {    if _, err := io.Copy(os.Stdout, os.Stdin); err != nil {        log.Fatal(err)    }}

呼唤远方

例如,package mainimport (    "io"    "os")func main() {    io.Copy(os.Stdout, os.Stdin)}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go