有一个创建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上发现了这一点,但是它只是将所有输入保存在 data 中,然后,当我按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)
}
}
}
答案 0 :(得分:0)
要检查参数数量,请使用len
:
package main
import (
"fmt"
"io/ioutil"
"os"
)
func main() {
// No arguments give, read from STDIN.
if len(os.Args) == 1 {
data, err := ioutil.ReadAll(os.Stdin)
if err != nil {
os.Exit(1)
}
fmt.Printf("%s", data)
os.Exit(0)
}
// TODO Read the content of all files.
}
答案 1 :(得分:0)
好吧,我发现了它并且有效
if len(os.Args) == 1 {
_, err := io.Copy(os.Stdout, os.Stdin)
if err != nil {
fmt.Println(err)
}
fmt.Println("^C")
}