Golang中如何获取用户输入

Golang中如何获取用户输入 我正在尝试弄清楚如何在 Go 语言中使用输入功能。我在 Go Playground 上创建了一个简单的程序,其中展示了代码但未能实现预期功能。不过它在命令行中确实可以正常运行。问题是第11行中的“%s”具体起什么作用?我知道它是一个字符串元素,但它的功能是什么?后面的部分(&hello)是指向变量的指针,但我不确定 %s 在这里扮演什么角色。提前感谢。

func main() {
    fmt.Println("hello world")
}
5 回复

如有疑问,请查阅手册:https://godoc.org/fmt

更多关于Golang中如何获取用户输入的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


我通过尝试移除不同部分来观察效果,但并没有得到任何有助于解决问题的错误信息。所以花了不少时间才弄明白。感谢您的确认。

你好。你完全理解正确了。向Scanf传递s的指针是为了让它能够设置s的值。如果只传递s本身,函数将只能接收到s的当前值(在这个例子中是空字符串)。

我想我搞明白了。当我调用 fmt.Scanf 时,它会在这种情况下寻找一个字符串,并将该输入指向变量 hello。所有这些都在最后一行被调用并打印出全部内容。这样理解对吗?

func main() {
    fmt.Println("hello world")
}

在Go语言中,获取用户输入通常使用fmt.Scanfmt.Scanlnfmt.Scanf函数。根据你的描述,你提到的第11行可能使用了fmt.Scanf,其中%s是一个格式说明符,用于读取字符串输入。

示例代码:

以下是一个完整的示例,展示如何使用fmt.Scanf获取用户输入:

package main

import "fmt"

func main() {
    var name string
    fmt.Print("请输入你的名字: ")
    _, err := fmt.Scanf("%s", &name)
    if err != nil {
        fmt.Println("输入错误:", err)
        return
    }
    fmt.Printf("你好, %s!\n", name)
}

解释:

  • %s是格式说明符,指示fmt.Scanf读取一个字符串,直到遇到空白字符(如空格、制表符或换行符)。
  • &name是指向变量name的指针,允许fmt.Scanf将输入的值存储到该变量中。

在Go Playground中,由于缺乏真实的输入流,这类交互式输入程序无法正常运行,但在本地命令行环境中可以正确工作。如果你的原始代码在Playground中失败,这是预期行为。

回到顶部