go - scanfl 声明变量超出功能

标签 go

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

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

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/

相关文章:

go - 如何/何时释放由 Go 代码创建的 C 字符串的内存?

go - sync.WaitGroup传值引起的死锁?

Golang LinkedList 删除第一个元素

mysql - 为什么连接到 Google Cloud SQL 在 Docker 容器内失败但在 Docker 容器外成功?

go - 从S3流式HLS视频

node.js - 在本地而不是远程导入 Go 包

go - 当我尝试模拟扇入时陷入僵局 - 通过阶乘计算扇出

go - 不能使用 _ 作为值

go - 使用 GoLang 将参数传递给 wkhtmltopdf

golang - codecoverage 始终显示覆盖率 : 0. 0% 的语句