問題: fmt.Scanf() を使用してユーザー入力を取得すると、無効な入力を効果的に処理することが困難になります。ユーザーが数字以外の文字を入力すると、ループが反復され続け、望ましくないエクスペリエンスが生じます。
解決策:
この問題を解決するには、フラッシュすることが重要です。各入力要求後の stdin (標準入力)。これにより、入力バッファーに残っている無効な文字はすべて破棄され、後続の入力リクエストが白紙の状態で開始されるようになります。
fmt.Scanln を使用した解決策:
fmt.Scanln 関数を利用すると、標準入力から文字列を読み取り、改行文字を自動的に処理できます。 fmt.Scanln を採用することで、stdin の明示的なフラッシュを必要とせずにループを簡素化できます。
<code class="go">package main import ( "fmt" ) func main() { fmt.Println("Please enter an integer: ") // Read in an integer var userI int _, err := fmt.Scanln(&userI) if err != nil { fmt.Printf("Error: %s", err.Error()) return } fmt.Println(userI) }</code>
代替ソリューション:
組み込みstdin フラッシュ関数では、代替ソリューションを使用できます:
結論:
Go には標準入力フラッシュ関数が組み込まれていませんが、fmt.Scanln や代替ソリューションは、無効な入力を効果的に処理し、ユーザーフレンドリーなループを維持できます。
以上がGo で `fmt.Scanf()` の後に無効な入力を処理し、標準入力をフラッシュする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。