有一個程序從命令行讀取兩個輸入:用戶名和密碼。字符串「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,我已經更新了描述和代碼,現在讓我知道它是否更好。 –