Fmt.Scanln を使用して文字列からスペースで区切られた文字列を読み取る
fmt パッケージの一部である Scanln 関数により、次の読み取りが可能になります。文字列からの入力。ただし、Scanln を使用するときに発生する一般的な問題は、スペースで区切られた複数の単語が予期されるときに最初の単語のみを取得することです。
提供された例では:
<code class="go">package main import "fmt" func main() { var s string fmt.Scanln(&s) fmt.Println(s) return }</code>
入力を使用してこのコードを実行すると、 「31 of month」の場合、予期される「31 of month」の代わりに「31」が出力されます。これは、Scanln がスペースを無視して入力を単一のトークンとして扱うためです。
この問題を解決するには、次の解決策を利用できます。
1.複数の変数を同時にスキャンする
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>
このコードは、「31」と「月」を正しく出力します。
2. Bufio スキャナーを使用する
bufio パッケージは、文字列を含むさまざまなソースから入力を読み取るプロセスを簡素化します。
<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>
このコードを使用すると、各行を読み取って出力できます。個別に。
以上がFmt.Scanln を使用して文字列からスペースで区切られた文字列を読み取る方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。