我需要帮助才能走出困境,因为我不明白我遇到的问题背后的逻辑。
我需要多次询问用户输入,所以从逻辑上讲,我正在创建如下函数:
func askstuff() {
fmt.Println("Write something:")
var input string
fmt.Scanln(&input)
}
现在我需要让用户从 main() 函数输入一个变量,但我有一个非声明性问题和大脑问题....事实上我期待做类似的事情,但它是错了
func main() {
askstuff()
println askstuff(input)
}
我一直在阅读所有的帖子和文档,我明白我应该在 main() 之外,在主体中,在 main() 之前使用声明变量而不是函数。仅当存在硬编码的固定值时它才像魅力一样工作,但它不适用于 Scanln 交互式控制台输入。
我需要执行很多次 askstuff(),如果没有单独的类/函数,它会让我发疯,但我还需要在 main() 函数中关闭输入到 askstuff() 函数之外的变量, 以便能够对其进行处理。
如果您给我一个不使用固定硬编码值但使用 scanln 用户控制台交互的示例,我 100% 同意 RTFM 回复。
所有书籍示例从不使用 scanln 输入,始终是正文中 main () 之外的固定声明变量。
我是否在特定的 scanln 限制下运行?设计概念与我的逻辑有关吗?还是有更好的方法?
请不要只给我关于如何解决问题的代码片段,请向我解释我的逻辑在哪里以及为什么是错误的,以便理解它并且以后不要重复错误。
最佳答案
从 askstuff
返回字符串并在调用者中根据需要使用:
func askstuff() string {
fmt.Println("Input to exit digit X:")
var input string
fmt.Scanln(&input)
return input
}
func main() {
x := askstuff()
fmt.Println(x)
}
关于go - scanfl 声明变量超出功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54970807/