我对 Golang 非常陌生,我正在尝试从用户读取输入,这是要以编程方式打开的文件的名称。
我最初尝试过这个:
package main
import (
"fmt"
"os"
"log"
"io/ioutil"
)
func takeInput() {
r, _ := os.Getwd()
fmt.Println("Your working dir:", r)
fmt.Print("Enter a file: ")
f, err := bufio.NewReader(os.Stdin).ReadString('\n')
if err != nil {
log.Fatal(err)
}
s, err := ioutil.ReadFile(string(f))
if err != nil {
log.Fatal(err)
}
fmt.Println(string(s))
}
func main() {
takeInput()
}
但不知何故,它总是导致:
$ go run getin.go
Your working dir: /media/DATA/Src
Enter a file: data.txt
2020/07/23 22:21:03 open data.txt
: no such file or directory
exit status 1
我data.txt在当前工作目录中有该文件。
我用谷歌搜索了一下,发现我也可以fmt.Scanln用来接受用户输入,效果很好:
func takeInput() {
r, _ := os.Getwd()
fmt.Println("Your working dir:", r)
var f string
fmt.Print("Enter a file: ")
fmt.Scanln(&f) // what I changed is how input is taken
s, err := ioutil.ReadFile(string(f))
if err != nil {
log.Fatal(err)
}
fmt.Println(string(s))
}
$ go run getin.go
Your working dir: /media/DATA/Src
Enter a file: data.txt
100,200,300,445
...
有人可以帮我理解使用bufio.NewReader获取用户输入的问题吗?
慕雪6442864
相关分类