猿问

表现得像使用 io/ioutil 的“cat”linux 命令

有一个任务来创建一个 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包和其中一个学校包来打印输出。在互联网上找到了这个,但它只是将所有输入保存在数据中,然后在我按 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)

        }

    }

}


慕尼黑8549860
浏览 96回答 2
2回答

慕尼黑5688855

好吧,我找到了它并且它有效if len(os.Args) == 1 {    _, err := io.Copy(os.Stdout, os.Stdin)    if err != nil {        fmt.Println(err)    }    fmt.Println("^C")}

慕桂英3389331

要检查参数的数量,请使用len:package mainimport (    "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.}
随时随地看视频慕课网APP

相关分类

Go
我要回答