reader.ReadString と ReadLine
Go では、bufio.Reader は入力ソースからテキストを読み取るための 2 つのメソッド、ReadString と ReadLine を提供します。 。これらのメソッドは、行末の改行文字の処理方法が異なります。
ReadString は、指定された区切り文字に遭遇するまで文字列を読み取ります。デフォルトでは、区切り文字は n (改行) であり、テキスト行全体が読み取られることを意味します。ただし、返された文字列から区切り文字は削除されません。質問で言及されているコード:
text, _ := reader.ReadString('\n')
テキスト変数には、改行文字を含む入力文字列が含まれます。したがって、「Alice」または「Bob」をチェックする場合、入力の末尾に改行文字があると比較が失敗します。
ReadLine は、改行文字。行内の文字を含むバイト スライスと、発生した問題を示すエラー値を返します。バイト スライスを文字列に変換するには、次のようにキャストする必要があります。
text, _, _ := reader.ReadLine()
ReadString の代わりに ReadLine を使用すると、改行文字がテキスト変数に含まれず、誤った比較の問題が解決されます。 .
もう 1 つの代替方法は、次を使用して入力文字列から改行文字を手動でトリミングすることです。 strings.TrimSpace 関数:
text = strings.TrimSpace(text)
これにより、改行を含む先頭と末尾の空白文字が削除され、明確な比較が保証されます。
以上がGo の ReadString と ReadLine: テキスト入力にそれぞれをいつ使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。