我想从命令行读取标准输入,但在提示输入之前,我的尝试已随着程序退出而结束。我正在寻找C#中的Console.ReadLine()等价物。
这是我目前所拥有的:
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)
}
发布于 2014-01-03 10:42:44
我不确定这个街区出了什么问题
reader := bufio.NewReader(os.Stdin)
fmt.Print("Enter text: ")
text, _ := reader.ReadString('\n')
fmt.Println(text)
因为它能在我的机器上工作。然而,对于下一个块,您需要一个指向要将输入赋值给的变量的指针。尝试用fmt.Scanln(&text2)
替换fmt.Scanln(text2)
。不要使用Sscanln
,因为它解析的是内存中已经存在的字符串,而不是来自标准输入的字符串。如果你想做一些你想做的事情,用fmt.Scanf("%s", &ln)
代替它
如果这仍然不起作用,您的罪魁祸首可能是一些奇怪的系统设置或有buggy的IDE。
发布于 2015-02-04 08:05:05
你也可以试试:
scanner := bufio.NewScanner(os.Stdin)
for scanner.Scan() {
fmt.Println(scanner.Text())
}
if scanner.Err() != nil {
// Handle error.
}
发布于 2016-11-21 00:57:22
在一个循环中读取多个输入的另一种方法,它可以处理带有空格的输入:
package main
import (
"fmt"
"bufio"
"os"
)
func main() {
scanner := bufio.NewScanner(os.Stdin)
var text string
for text != "q" { // break the loop if text == "q"
fmt.Print("Enter your text: ")
scanner.Scan()
text = scanner.Text()
if text != "q" {
fmt.Println("Your text was: ", text)
}
}
}
输出:
Enter your text: Hello world!
Your text was: Hello world!
Enter your text: Go is awesome!
Your text was: Go is awesome!
Enter your text: q
https://stackoverflow.com/questions/20895552
复制相似问题