我用Go语言输入值的语法

我用Go语言输入值的语法,go,Go,我一直在寻找一种方法,如何在C语言中使用这样的语法 scanf("%d",&num); 我在Go Lanuguage发现你可以用这个 fmt.scanf("%d",&num) 问题是当我使用它两次时,它不允许我在第二部分输入值 例如: package main import "fmt" func main() { var name string var age int fmt.Print("Enter your name: ") fmt.S

我一直在寻找一种方法,如何在C语言中使用这样的语法

scanf("%d",&num);
我在Go Lanuguage发现你可以用这个

fmt.scanf("%d",&num)
问题是当我使用它两次时,它不允许我在第二部分输入值

例如:

package main

import "fmt"

func main() {
    var name string
    var age int
    fmt.Print("Enter your name: ")
    fmt.Scanf("%s", &name)
    fmt.Print("\nEnter your age: ")
    fmt.Scanf("%d", &age)
    fmt.Println(name,"is",age,"years of Age")
}
示例输入名称=Jack,年龄=18(这是问题的一部分,它不允许我输入年龄) 它将显示

Jack is 0 years of age

您可以将最后一行替换为以下内容:

fmt.Printf("%s is %d years of age", name, age)
以下是完整的代码:

package main                                                                                                                            

import "fmt"

func main() {
    var name string
    var age int 
    fmt.Print("Enter your name: ")
    fmt.Scanf("%s", &name)
    fmt.Print("Enter your age: ")
    fmt.Scanf("%d", &age)
    fmt.Printf("\n%s is %d years of age \n", name, age)
}
输出:

输入您的姓名:rex

请输入您的年龄:33

雷克斯33岁

试试这个:

package main

import (
"bufio"
"fmt"
"os"
"strings"
)

func main() {

r := bufio.NewReader(os.Stdin)
fmt.Print("Enter your name: ")
name, _ := r.ReadString('\n')

fmt.Print("Enter your age: ")
age, _ := r.ReadString('\n')
name, age = strings.TrimSpace(name), strings.TrimSpace(age) //remove \n
fmt.Println(name, "is", age, "years of Age")

}

它仍然不起作用…问题是它不允许我在第二部分“输入你的年龄”中输入它直接进入“雷克斯是0岁”@shadowj3yz你确定吗?我把我的代码放在main.go上面,然后运行“go run main.go”,然后我被要求输入第二部分(年龄)。我在回答中指出的输出是我运行代码时得到的实际输出。@shadowj3yz您在围棋场上运行它吗?Stdin在那里不工作,请尝试在本地运行它。我正在windows中通过命令使用Go编程语言promt@shadowj3yz我认为在这种情况下,在windows和linux上工作并不重要。复制和粘贴“我的代码”没有得到所需的结果?您忽略了
Scanf
的返回值,因此在调试问题时,首先要检查这些值。是否使用输入文件?试着不用它,而是用键盘,只需“go run xxx.go”,然后插入插孔(return)18(return)。它在Linux中适用于我。