我怎样才能在 Golang 中接受用户的输入 (fmt.scan)
how can I take input from user in Golang (fmt.scan)
我无法通过使用 fmt.scan()
.
在 Golang 中获取用户的输入
package main
import "fmt"
func main() {
fmt.Print("Enter text: ")
var input string
e, _ := fmt.Scanln(&input)
fmt.Println(input)
fmt.Println(e)
}
image of code
停止调试器后:
image of code
err
添加到代码中,但没有任何反应。
func main() {
fmt.Print("Enter text: ")
var input string
e, err := fmt.Scanln(&input)
if err != nil {
fmt.Fprintln(os.Stderr, err)
return
}
fmt.Println(input)
fmt.Println(e)
}
Image after add err in my Code. 下一行的 "not available" 是什么(在我的输入值:“51213”之后)
你的代码没有问题。如果您直接在终端中使用 go build
和 运行 二进制文件构建代码,您将看到您的代码 运行s。
您遇到的问题是因为 Delve 和 vscode 调试控制台。 vscode 调试控制台不支持从标准输入读取。您可以查看此问题:Cannot debug programs which read from STDIN 以获取详细信息。
不需要'e'。将其替换为下划线并删除打印语句。
import (
"fmt"
"os"
)
func main() {
fmt.Print("Enter text: \n")
var input string
_, err := fmt.Scanln(&input)
if err != nil {
fmt.Fprintln(os.Stderr, err)
return
}
fmt.Println(input)
}
备案。如果你想输入一个数值,fmt.Scan 将该值作为字符串存储在一个变量中,如果你想用它进行任何数学运算,你需要将它转换为 int 或 float。一个简单的例子:
func main() {
fmt.Println("Type your age: ")
var input string
_, err := fmt.Scanln(&input)
if err != nil {
fmt.Fprintln(os.Stderr, err)
return
}
fmt.Printf("%T\n", input) // outputs string
inputInt,_ := strconv.Atoi(input)
fmt.Printf("%T\n", inputInt) // outputs int
fmt.Printf("You were born in %d\n", 2021-inputInt)
}
花了我一段时间才弄明白,希望对您有所帮助!
我无法通过使用 fmt.scan()
.
package main
import "fmt"
func main() {
fmt.Print("Enter text: ")
var input string
e, _ := fmt.Scanln(&input)
fmt.Println(input)
fmt.Println(e)
}
image of code
停止调试器后:
image of code
err
添加到代码中,但没有任何反应。
func main() {
fmt.Print("Enter text: ")
var input string
e, err := fmt.Scanln(&input)
if err != nil {
fmt.Fprintln(os.Stderr, err)
return
}
fmt.Println(input)
fmt.Println(e)
}
Image after add err in my Code. 下一行的 "not available" 是什么(在我的输入值:“51213”之后)
你的代码没有问题。如果您直接在终端中使用 go build
和 运行 二进制文件构建代码,您将看到您的代码 运行s。
您遇到的问题是因为 Delve 和 vscode 调试控制台。 vscode 调试控制台不支持从标准输入读取。您可以查看此问题:Cannot debug programs which read from STDIN 以获取详细信息。
不需要'e'。将其替换为下划线并删除打印语句。
import (
"fmt"
"os"
)
func main() {
fmt.Print("Enter text: \n")
var input string
_, err := fmt.Scanln(&input)
if err != nil {
fmt.Fprintln(os.Stderr, err)
return
}
fmt.Println(input)
}
备案。如果你想输入一个数值,fmt.Scan 将该值作为字符串存储在一个变量中,如果你想用它进行任何数学运算,你需要将它转换为 int 或 float。一个简单的例子:
func main() {
fmt.Println("Type your age: ")
var input string
_, err := fmt.Scanln(&input)
if err != nil {
fmt.Fprintln(os.Stderr, err)
return
}
fmt.Printf("%T\n", input) // outputs string
inputInt,_ := strconv.Atoi(input)
fmt.Printf("%T\n", inputInt) // outputs int
fmt.Printf("You were born in %d\n", 2021-inputInt)
}
花了我一段时间才弄明白,希望对您有所帮助!