Go scanfl声明性变量超出函数范围

Go scanfl声明性变量超出函数范围,go,Go,我需要一个帮助来摆脱困境,因为我不明白我遇到的问题背后的逻辑 我需要多次询问用户输入,因此逻辑上我创建了一个函数,如: func askstuff() { fmt.Println("Write something:") var input string fmt.Scanln(&input) } 现在我需要将用户输入从main()函数中获取到一个变量中,但我有一个非声明性的问题和一个大脑问题……事实上,我本来希望这样做,但这是错误的 func main() {

我需要一个帮助来摆脱困境,因为我不明白我遇到的问题背后的逻辑

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

func askstuff() {
    fmt.Println("Write something:")
    var input string
    fmt.Scanln(&input)
}
现在我需要将用户输入从main()函数中获取到一个变量中,但我有一个非声明性的问题和一个大脑问题……事实上,我本来希望这样做,但这是错误的

func main() {
    askstuff()
    println askstuff(input)
}
我已经阅读了所有的文章和文档,我知道我应该在main()之前的body()中使用main()之外的声明性变量,而不是函数。只有当存在硬编码的固定值时,它才会像一个符咒一样工作,但在Scanln交互式控制台输入中则不然

我需要多次执行askstuff(),这会让我在没有单独的类/函数的情况下发疯,但我还需要在main()函数中关闭askstuff()函数外的变量输入,以便能够处理它

如果你给我一个例子,不使用固定的硬编码值,而是使用scanln的用户控制台交互,我100%同意RTFM回复

所有书籍示例从不使用scanln输入,始终是正文中main()之外的固定声明性变量

我是否有特定的扫描限制?设计概念是否与我的逻辑有关?还是有更好的方法


请不要只给我一个关于如何解决问题的片段,向我解释我的逻辑错误的位置和原因,以便理解它,以后不要重复错误。

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

类似地,它最终写入变量的内存地址,而不是输入
code
package main import(“fmt”)func askstuff(){fmt.Println(“输入到退出数字X:”)var输入字符串fmt.Scanln(&input)fmt.Println(input)return}func main(){askstuff()Println(askstuff)}