为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
白衣染霜花 2021-05-12 18:09:25
我在cat下面有一个Unix工具的实现。它将多个字节从中读取os.Stdin到缓冲区中,然后将这些字节写出到中os.Stdout。有没有一种方法可以跳过缓冲区,而Stdin直接将其传递给Stdout?package mainimport "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])        }    }}
查看完整描述

2 回答

?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

您可以使用io.Copy() (此处的文档)

例子:


package main


import (

    "os"

    "io"

    "log"

)


func main() {

    if _, err := io.Copy(os.Stdout, os.Stdin); err != nil {

        log.Fatal(err)

    }

}


查看完整回答
反对 回复 2021-05-17
?
呼唤远方

TA贡献1856条经验 获得超11个赞

例如,


package main


import (

    "io"

    "os"

)


func main() {

    io.Copy(os.Stdout, os.Stdin)

}


查看完整回答
反对 回复 2021-05-17
  • 2 回答
  • 0 关注
  • 210 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信