有一个程序从命令行读取两个输入:用户名和密码。字符串“Password:”只能在输入用户名后在控制台中打印,但在我的程序中,它会立即打印第一个字符串“Username:”。如何解决这个问题?按顺序输出和输入字符串
package main
import (
"bufio"
"os"
"fmt"
)
// A simple program that verifies the user by username and password.
var loginstatus bool
var username, password string
func login(username, password string) bool {
if username == "user123" && password == "pass123" {
return true
} else {
return false
}
}
func main() {
fmt.Print("Username: ")
user := bufio.NewScanner(os.Stdin)
fmt.Print("Password: ")
pass := bufio.NewScanner(os.Stdin)
for user.Scan() && pass.Scan() {
if login(user.Text(), pass.Text()) {
fmt.Println("Signed in.")
os.Exit(3)
} else {
fmt.Println("Incorrect username or password, please try again:")
}
}
}
你说你需要阅读从bufio.NewScanner字符串(这只是创建了一个扫描仪,它不读取任何字符串,所以这有点误导),然后你的例子根本不使用扫描仪。这个答案可能会让新的Go用户感到困惑。 – Adrian
@Adrian,我已经更新了描述和代码,现在让我知道它是否更好。 –