scanfl 声明变量超出功能

我需要帮助才能走出困境,因为我不明白我遇到的问题背后的逻辑。


我需要多次询问用户输入,所以逻辑上我正在创建一个函数,如:


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 限制下运行?设计概念与我的逻辑有关吗?或者有更好的方法?


请不要只给我关于如何解决问题的片段,解释我的逻辑在哪里以及为什么是错误的,以便理解它并且以后不要重复错误。


墨色风雨
浏览 77回答 1
1回答

繁花不似锦

返回字符串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)}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go