📜  golang fmt.scanln 整行 (1)

📅  最后修改于: 2023-12-03 14:41:33.321000             🧑  作者: Mango

使用golang fmt.Scanln整行读取输入

当编写基于命令行的Golang程序时,对于从标准输入接收用户输入,我们通常选择使用 fmt.Scanln函数。fmt.Scanln函数可以读取用户输入直到遇到换行符,并将输入值以空格分隔符分解为多个字符串。

但是,有时我们需要读取一整行输入,而不是只读取第一部分,这时我们可以使用 bufio.ReadString()函数。该函数可以读取一行文本数据,因此,即使输入中包含空格,数据也可以完整地读取。

下面是如何使用bufio.ReadString()函数进行整行读取:

package main

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

func main() {
    fmt.Println("Please enter your name:")
    reader := bufio.NewReader(os.Stdin)
    name, err := reader.ReadString('\n')
    if err != nil {
        fmt.Println(err)
    } else {
        fmt.Println("Hello, " + name)
    }
}

请注意,bufio.ReadString()函数需要一个参数作为分隔符,在这里使用了换行符。 您还可以更改分隔符以读取其他类型的输入。

以上代码可以这样解释:

  1. 代码第5行,要求用户输入名称。
  2. 代码第7-8行,创建带有标准输入的仅读取器 - bufio.Reader
  3. 代码第9-11行,调用bufio.ReadString()函数来读取整行输入,并检查是否出现任何错误。
  4. 代码第12-14行,将读取的输入与其他文本组合,输出Hello语句。