如何使一个Go程序等待用户输入?

huangapple go评论92阅读模式
英文:

How do I make a GO program wait until there is user input?

问题

如何使程序等待,直到用户输入数据?

要实现这个功能,你可以使用bufio包中的Scanner类型的Scan()方法。这个方法会阻塞程序的执行,直到用户输入数据并按下回车键。

下面是修改后的代码:

package main

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

func main() {
	fmt.Println("请输入 y 的值:")
	input := bufio.NewScanner(os.Stdin)
	input.Scan() // 程序会在这里等待用户输入
	fmt.Println("你输入的值是:", input.Text())
}

这样,当程序执行到input.Scan()这一行时,它会等待用户输入数据。用户输入数据后,程序会继续执行,并将用户输入的值打印出来。

英文:
package main

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

func main() {
	fmt.Println("insert y value here: ")
	input := bufio.NewScanner(os.Stdin)
	fmt.Println(input.Text)
}

How do I make the program wait, until the user inputs data?

答案1

得分: 11

Scanner并不是读取命令行输入的理想工具(参见HectorJ上面引用的答案),但如果你想让它工作,你需要调用Scan()方法(还要注意Text()是一个方法调用):

func main() {
    fmt.Print("在这里插入y的值:")
    input := bufio.NewScanner(os.Stdin)
    input.Scan()
    fmt.Println(input.Text())
}
英文:

Scanner isn't really ideal for reading command line input (see the answer HectorJ referenced above), but if you want to make it work, it's a call to Scan() that you're missing (also note that Text() is a method call):

func main() {
    fmt.Print("insert y value here: ")
    input := bufio.NewScanner(os.Stdin)
    input.Scan()
    fmt.Println(input.Text())
}

huangapple
  • 本文由 发表于 2015年11月21日 01:35:45
  • 转载请务必保留本文链接:https://go.coder-hub.com/33832762.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定