scanfl声明变量超出功能

时间:2019-03-03 16:06:11

标签: go

我需要帮助才能摆脱困境,因为我不了解遇到的问题背后的逻辑。

我需要多次询问用户输入,因此从逻辑上讲,我正在创建一个函数,例如:

func askstuff() {
    fmt.Println("Write something:")
    var input string
    fmt.Scanln(&input)
}

现在我需要从main()函数获取用户输入的变量,但是我有一个非声明性的问题和一个大脑问题。...事实上,我期望这样做,但是错误

func main() {
    askstuff()
    println askstuff(input)
}

我一直在阅读所有文章和文档,并且我了解,我应该在main()之前的主体中使用main()中的声明性变量代替函数。仅当存在硬编码的固定值时,它才像魅力一样起作用,但不适用于Scanln交互式控制台输入。

我需要执行很多次AskQuestFuff(),以至于没有单独的类/函数,我就会发疯,但是我还需要关闭AskStuff()函数之外的main()函数中的变量输入,以便能够对其进行处理。

如果您举一个不使用固定硬编码值但使用scanln与用户控制台交互的示例,我会100%接受RTFM答复。

所有书籍示例都从不使用scanln输入,而是始终在主体main()中使用固定的声明性变量。

我是否在特定的scanln限制下运行?设计概念与我的逻辑有关吗?还是有更好的方法?

请不要仅向我提供有关如何解决此问题的摘要,请向我解释我的逻辑错在哪里以及为什么错,以便了解它,以后不再重复该错误。

1 个答案:

答案 0 :(得分:0)

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)
}