【发布时间】:2014-01-20 15:28:43
【问题描述】:
我想从命令行读取标准输入,但我的尝试已经结束,程序在提示输入之前退出。我正在 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)
}
【问题讨论】:
-
这段代码看起来是正确的。出于好奇,你是在操场上运行这个吗?由于网络原因,Go Playground 不允许输入标准输入。
-
没关系,这看起来是一个需要指针的微妙问题(请参阅我的回答)。虽然我不确定 bufio.NewReader 方法有什么问题,因为它对我有用。
-
不要将任何阅读器的
bufio缓冲(例如bufio.NewReader(os.Stdin))与来自下划线阅读器的直接读取(例如fmt.Scanln(x)直接从os.Stdin读取)混合。缓冲可以任意向前读取。 (在这种特定情况下,后者应该是fmt.Fscanln(reader,x)从同一个缓冲区读取)。 -
我没有得到
fmt.Sscanln的工作,运行后变成“%v”
标签: go