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的当前值(在这个例子中是空字符串)。
在Go语言中,获取用户输入通常使用fmt.Scan、fmt.Scanln或fmt.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中失败,这是预期行为。


