【背景】
折腾:
期间,需要去获得输入的百度的用户名和密码,所以需要去搞懂:
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语言中获得控制台输入的字符串