【背景】
折腾:
期间,需要去获得输入的百度的用户名和密码,所以需要去搞懂:
go语言中,如何获得console,此处是windows的cmd的输入。
【折腾过程】
1.参考:
Golang function similar to getchar
Getting standard input in golang
去试试。
2.期间还出错了:
【已解决】go语言中赋值出错:no new variables on left side of :=
3.但是去用Scanf的话:
strBaiduUsername := ""
strBaiduPassword := ""
// stdinReader := bufio.NewReader(os.Stdin)
// inputBytes, _ := stdinReader.ReadString('\n')
// fmt.Printf("Input Char Is : %v", string([]byte(input)[0]))
_, err1 := fmt.Scanf("%s", &strBaiduUsername)
if nil == err1 {
gLogger.Info("strBaiduUsername=%s", strBaiduUsername)
}
_, err2 := fmt.Scanf("%s", &strBaiduPassword)
if nil == err2 {
gLogger.Info("strBaiduPassword=%s", strBaiduPassword)
}会导致:
只能获得一次的输入,就退出了:
4.最后是如下代码:
strBaiduUsername := ""
strBaiduPassword := ""
// stdinReader := bufio.NewReader(os.Stdin)
// inputBytes, _ := stdinReader.ReadString('\n')
// fmt.Printf("Input Char Is : %v", string([]byte(input)[0]))
//_, err1 := fmt.Scanf("%s", &strBaiduUsername)
_, err1 := fmt.Scanln(&strBaiduUsername)
if nil == err1 {
gLogger.Info("strBaiduUsername=%s", strBaiduUsername)
}
//_, err2 := fmt.Scanf("%s", &strBaiduPassword)
_, err2 := fmt.Scanln(&strBaiduPassword)
if nil == err2 {
gLogger.Info("strBaiduPassword=%s", strBaiduPassword)
}可以实现我们要的,支持多次输入且获得对应的字符串的:
name [09/21/13 16:41:08] [INFO] strBaiduUsername=name passwd [09/21/13 16:41:11] [INFO] strBaiduPassword=passwd E:\Dev_Root\go\src\EmulateLoginBaidu>
如图:
【总结】
go语言中,获得输入的字符串,且支持多次获取输入的话,用如下代码:
strBaiduUsername := ""
strBaiduPassword := ""
// stdinReader := bufio.NewReader(os.Stdin)
// inputBytes, _ := stdinReader.ReadString('\n')
// fmt.Printf("Input Char Is : %v", string([]byte(input)[0]))
//_, err1 := fmt.Scanf("%s", &strBaiduUsername)
_, err1 := fmt.Scanln(&strBaiduUsername)
if nil == err1 {
gLogger.Info("strBaiduUsername=%s", strBaiduUsername)
}
//_, err2 := fmt.Scanf("%s", &strBaiduPassword)
_, err2 := fmt.Scanln(&strBaiduPassword)
if nil == err2 {
gLogger.Info("strBaiduPassword=%s", strBaiduPassword)
}即可。
转载请注明:在路上 » 【已解决】go语言中获得控制台输入的字符串