繁体   English   中英

如何在 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)
}

代码图像

停止调试器后:代码图像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)
}

在我的代码中添加错误后的图像。 下一行中的“不可用”是什么(在我的输入值之后:“51213”)

您的代码没有问题。 如果您使用go build构建代码并直接在终端中运行二进制文件,那么您将看到代码运行。

您遇到的问题是由于使用了Delve和vscode调试控制台。 vscode调试控制台不支持从stdin读取。 您可以检查此问题: 无法调试从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)
}

花了我一段时间才弄明白,希望它有帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM