【发布时间】:2020-04-20 07:27:49
【问题描述】:
有一个任务是创建一个 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 包和其中一个学校包来打印输出。 在互联网上找到了这个,但它只是将所有输入保存在 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)
}
}
}
【问题讨论】:
-
向我们展示你尝试实现
cat的内容。它有效吗?如果没有,什么不起作用? -
"它只是将所有输入保存在数据中,然后在我按 ctrl+C 后将其打印回来。"这就是
cat从您输入的 STDIN 中读取的内容。你有什么期待? -
当您在命令行中仅键入
cat时,它会立即打印回您键入的任何内容。您首先编写的函数会读取并保存我输入的所有内容,并且只有在 ctrl+C 之后才会全部打印出来。 -
对于从 os.Stdin 复制(提示,提示),您不需要 ioutil 包。另外,我非常怀疑您不允许使用内置函数(您也没有获得使用
==和++运算符的明确许可)。 -
好吧,我一个月前才开始编码,我不知道所有这些,但我可以使用 ++ == 等,不能使用 len、make、append 和 mb smthing else跨度>