如何从控制台行读取输入?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (12)

我想从命令行读取输入,但是在提示输入之前,我的尝试已经结束了,程序退出了。我在找相当于Readline()在C#。

这就是我目前的情况:

package main

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

func main() {
    reader := bufio.NewReader(os.Stdin)
    fmt.Print("Enter text: ")
    text, _ := reader.ReadString('\n')
    fmt.Println(text)

    fmt.Println("Enter text: ")
    text2 := ""
    fmt.Scanln(text2)
    fmt.Println(text2)

    ln := ""
    fmt.Sscanln("%v", ln)
    fmt.Println(ln)
}
提问于
用户回答回答于

reader := bufio.NewReader(os.Stdin)
fmt.Print("Enter text: ")
text, _ := reader.ReadString('\n')
fmt.Println(text)

试着替换fmt.Scanln(text2)fmt.Scanln(&text2)。不要用Sscanln,因为它解析内存中已经存在的字符串,而不是stdin。如果你想做你想做的事情,用fmt.Scanf("%s", &ln)

用户回答回答于

你也可以试试:

scanner := bufio.NewScanner(os.Stdin)
for scanner.Scan() {
    fmt.Println(scanner.Text())
}

if scanner.Err() != nil {
    // handle error.
}

扫码关注云+社区