【发布时间】:2022-01-12 21:16:33
【问题描述】:
我正在尝试检查输入是否为空白并使用 for 循环再次请求输入,但程序只是反复遍历循环而没有停止等待输入并在其中输出 print 语句 100 次,我做错了什么?
var input string
for len(input) == 0 {
fmt.Println("What would you like to write in the journal?")
input = usr.GetInput()
}
GetInput 使用 bufio.NewScanner 并返回scanner.Text,但即使我尝试Scanln,错误仍然出现。
编辑:
这里要求的是 GetInput
func GetInput() string {
scanner := bufio.NewScanner(os.Stdin)
return scanner.Text()
}
【问题讨论】:
-
len(input) <= 1导致按下返回意味着\n特殊字符,即 1 个符号您可以通过println(len(input))进行检查 -
如果 GetInput 在每次调用时都调用 bufio.NewScanner,那么 GetInput 会吞下一些输入,返回第一行并丢弃其余的。显示 GetInput 的代码。
-
或在输入后添加:
input = strings.TrimSpace(input) -
@crispy 需要更多代码,我们无法预测 GetInput 是什么
-
这不是您使用
bufio.Scanner的方式。看看example in the documentation
标签: go visual-studio-code