Go 表现得像一个;猫;使用io/ioutil的linux命令

Go 表现得像一个;猫;使用io/ioutil的linux命令,go,input,io,Go,Input,Io,有一项创建go文件的任务,该文件类似于cat命令。我有一些想法如何做到这一点,但我不知道如何读取输入,如果没有写入文件名 student@ubuntu:~/div-01/cat$ go build cat.go student@ubuntu:~/div-01/cat$ ./cat Hello Hello ^C student@ubuntu:~/div-01/cat$ 此外,我只能使用ioutil、io、os软件包和其中一个学校软件包打印输出。 在internet上找到了这个,但它只是将所有输入

有一项创建go文件的任务,该文件类似于cat命令。我有一些想法如何做到这一点,但我不知道如何读取输入,如果没有写入文件名

student@ubuntu:~/div-01/cat$ go build cat.go
student@ubuntu:~/div-01/cat$ ./cat
Hello
Hello
^C
student@ubuntu:~/div-01/cat$
此外,我只能使用ioutil、io、os软件包和其中一个学校软件包打印输出。
在internet上找到了这个,但它只是将所有输入保存在数据中,然后,在我按下ctrl+C键后,它会将其打印回来

package main

import (
    "fmt"
    "io/ioutil"
    "os"
)

func main() {
    var lenght int
    args := os.Args[1:]
    for i := range args {
        lenght++
        i++
    }
    if lenght == 0 {
        data, err := ioutil.ReadAll(os.Stdin)
        if err == nil {
            fmt.Println(data)
        }
    }
}

要检查参数的数量,请使用
len

主程序包
进口(
“fmt”
“io/ioutil”
“操作系统”
)
func main(){
//不提供参数,从标准输入读取。
如果len(os.Args)==1{
数据,err:=ioutil.ReadAll(os.Stdin)
如果错误!=零{
操作系统退出(1)
}
fmt.Printf(“%s”,数据)
操作系统退出(0)
}
//TODO读取所有文件的内容。
}

好吧,我找到了这个,它很管用

if len(os.Args) == 1 {
    _, err := io.Copy(os.Stdout, os.Stdin)
    if err != nil {
        fmt.Println(err)
    }
    fmt.Println("^C")
}

向我们展示您尝试实施的
cat
。它有用吗?如果没有,什么不起作用?“它只是将所有输入保存在数据中,然后,在我按下ctrl+C后,它会将其打印回来。”这就是
cat
从您键入的STDIN读取时所做的。您希望得到什么呢?当您在命令行中只键入一个
cat
时,它将立即打印回您键入的任何内容。您首先编写的funcs读取并保存我键入的所有内容,只有在ctrl+C之后,它才会一次打印所有内容。对于从os.Stdin复制(提示,提示),您不需要ioutil包。另外,我非常怀疑你不能使用内置函数(你也没有获得使用
=
++
操作符的明确许可)。我一个月前才开始编码,我不知道所有的,但我可以使用+==等。不能使用len、make、append和mb smthing。我不能使用len,但我知道。我只尝试了我写的东西。
len
不是一个包,它是一个。好吧,我仍然不能在我的任务中使用它。而你的func给出的结果与你能使用的结果相同?我只能使用ioutil、io、os和casting