如何从控制台中的标准输入读取?

新手上路,请多包涵

我想从命令行读取标准输入,但我的尝试以程序在提示我输入之前退出而结束。我正在寻找 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)
}

原文由 Dante 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 566
2 个回答

我不确定这个块有什么问题

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) 替换它

如果这仍然不起作用,您的罪魁祸首可能是一些奇怪的系统设置或有问题的 IDE。

原文由 Linear 发布,翻译遵循 CC BY-SA 3.0 许可协议

您也可以尝试:

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

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

原文由 Helin Wang 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题