Windows 上の GOLang で Scanf を使用する際のエラー
GOLang の Scanf 関数は、ユーザー入力を 2 回取得しようとすると問題を引き起こす可能性があります。最初の入力は正常に取得されますが、Windows システムでの 2 回目の試行中に関数が突然終了します。この現象は macOS では発生しません。
<code class="go">func credentials() (string, string) { var username string var password string fmt.Print("Enter Username: ") fmt.Scanf("%s", &username) fmt.Print("Enter Password: ") fmt.Scanf("%s", &password) return username, password }</code>
解決策:
Scanf は区切り文字としてスペースを使用する点が独特で、使用するのがやや困難です。 Bufio は、プロセスを簡素化する優れた代替手段を提供します。
<code class="go">func credentials() (string, string) { reader := bufio.NewReader(os.Stdin) fmt.Print("Enter Username: ") username, _ := reader.ReadString('\n') fmt.Print("Enter Password: ") password, _ := reader.ReadString('\n') return strings.TrimSpace(username), strings.TrimSpace(password) // Remove trailing newline character }</code>
この変更されたコードは問題に対処し、Windows と macOS の両方でシームレスに機能します。
以上がWindows 上の Go で 2 番目の入力で Scanf が失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。