我想从命令行读取标准输入,但我的尝试以程序在提示我输入之前退出而结束。我在 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) }
我不确定块有什么问题
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)
fmt.Scanln(text2)
fmt.Scanln(&text2)
Sscanln
fmt.Scanf("%s", &ln)
如果这仍然不起作用,您的罪魁祸首可能是一些奇怪的系统设置或有缺陷的 IDE。
你也可以试试:
scanner := bufio.NewScanner(os.Stdin) for scanner.Scan() { fmt.Println(scanner.Text()) } if scanner.Err() != nil { // Handle error. }