fmt.scanln でスペース区切りの文字列を解析する方法
fmt.scanln は、標準入力から入力を読み取り、スキャンするために使用される関数です。それを構造化変数に変換します。ただし、スペースで区切られた文字列を読み取る場合、予期しない動作が発生する可能性があります。
デフォルトでは、fmt.scanln は最初の改行文字でスキャンを停止します。これにより、ユーザーがスペースで区切られた複数の単語を含む文字列を入力しても、最初の単語だけがキャプチャされるという状況が発生する可能性があります。
たとえば、次のコードを考えてみましょう。
<code class="go">package main import "fmt" func main() { var s string fmt.Scanln(&s) fmt.Println(s) return }</code>
Whenユーザーが「月の 31」と入力すると、「31」だけが s 変数に取り込まれます。これは、fmt.scanln が空白文字であるスペース文字を検出した後にスキャンを停止するために発生します。
この問題を解決し、スペースで区切られた複数の単語をキャプチャするには、次のいずれかを実行できます。
複数の fmt.Scanln ステートメントを使用します:
<code class="go">package main import "fmt" func main() { var s1 string var s2 string fmt.Scanln(&s1, &s2) fmt.Println(s1) fmt.Println(s2) return }</code>
バッファ付きスキャナを使用します:
<code class="go">package main import ( "bufio" "fmt" "os" ) func main() { scanner := bufio.NewScanner(os.Stdin) for scanner.Scan() { s := scanner.Text() fmt.Println(s) } if err := scanner.Err(); err != nil { os.Exit(1) } }</code>
以上がGo で fmt.Scanln を使用してスペースで区切られた文字列を解析するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。