条件チェックなしで入力ループをエスケープする
Go では、bufio.Scanner を使用してコンソールから入力を 1 行ずつ読み取ることができます。ただし、標準の Scan 関数は自動的に次のトークンに進み、明示的なブレーク条件がない場合は無限ループが発生する可能性があります。
ドキュメントには、入力の終わりに達すると Scan が false を返すと記載されています。これは、ループから抜け出すための条件チェックをスキップできるという意味ですか?
ドキュメントの誤解
残念ながら、ドキュメントの解釈を誤っていました。スキャナで使用されるデフォルトの分割関数は ScanLines で、テキストの各行を個別のトークンとして返します。
ScanLines の動作
ScanLines には 2 つの重要な動作があります。
Loop
したがって、空の行だけでは入力の終了を示しません。ループはファイルの終わり (EOF) 条件に達した場合にのみ中断されます。通常は Ctrl-D を押すなどのアクションによってトリガーされます。
解決策
エスケープするにはif 句のない入力ループでは、次のいずれかを行う必要があります。
ただし、一般的には条件チェックを維持することをお勧めします。シンプルにして、潜在的なエッジケースを回避します。
以上が条件チェックを行わずに Go `bufio.Scanner` 入力ループを回避できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。