コマンドラインから2つの入力:ユーザー名とパスワードを読み取るプログラムがあります。文字列 "Password:"はユーザー名を入力した後でのみコンソールに表示されますが、私のプログラムでは最初の文字列 "Username:"と共にすぐに印刷されます。これを修正するには?連続した出力と文字列の入力Go
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から文字列を(読む必要が言う:あなたは最初bufio.NewScannerから新しいスキャナを宣言してからos.Stdinからデータを読み取るためのメソッドReadStringを使用する必要がありますスキャナでは、文字列を読み込まないので、少し誤解を招く)、あなたの例ではスキャナをまったく使用しません。この回答は、新しいGoユーザにとって混乱を招く可能性があります。 – Adrian
@Adrian、私は説明とコードを更新しました。 –