user-input - 捕获间隔的用户输入

标签 user-input go

我试图在 Go 中捕获用户输入,但运气不佳。我可以让非空格词工作:

var s string
println("enter string:")
fmt.Scan(&s)

但是,Go 文档说扫描将在空格和新行处定界。所以我想我必须设置 bufio.Reader 的 ReadLine。这是我的尝试,它不会编译:

package main

import (
    "bufio"
    "os"
    "fmt"
)

const delim = '\n'
const file = "file"

func main() {

    r := bufio.NewReader() *Reader

    println("enter string:")
    line, err := r.ReadString(delim)
    if err != nil {
        fmt.Println(err)
        os.Exit(1)
    }
    fmt.Println(line)

}

错误:

1.go:14: not enough arguments in call to bufio.NewReader
1.go:14: undefined: Reader

那么,我该如何定义“Reader”呢?如果定义了它,这是否是将输入捕获为字符串的正确方法,以“\n”而不是空格分隔?还是我应该做一些完全不同的事情?

提前致谢。

最佳答案

改变

r := bufio.NewReader() *Reader

阅读

r := bufio.NewReader(os.Stdin)

解决问题。

原来的咒语是不正确的,因为你似乎只是从 the spec 复制并粘贴了方法的签名。 ,但规范定义了签名,而不是调用示例,因此 *Reader 中有方法的返回类型(您的变量 r 将具有的类型)。该方法的唯一参数定义为 rd io.Reader;该接口(interface)由 os.Stdin 符号方便地实现,这似乎与您的任务完美匹配。

附言 考虑阅读 "Learning Go" 中的所有文档文档部分,尤其是“Effective Go”。

关于user-input - 捕获间隔的用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7452641/

相关文章:

php - 如何将 PHP 脚本转义到外部编辑器并在之后返回?

loops - 离开循环后指针变为 nil

go - 如何将多个yaml字段分组为一个

go - 如何将嵌套模块路径中的某些内容带入当前范围?

java - 为什么我的程序要求输入符号两次而不是一次(忽略第一个符号)?

c - 将用户输入写入文件,然后读取它

bash - 在 bash 脚本中建议对用户输入的回答

optimization - 我该如何改进这段代码?提示用户输入 [Rust]

unix - go语言os.FileMode函数是如何从integers/octal/转换权限的???在设置标志之前?

go - 无法返回任何 k8s client-go 对象