fmt.Scanln を使用してスペース区切りの文字列を読み取る
fmt.Scanln() の使用中に、必要な場所でインスタンスが発生することがよくありますテキストが切り詰められます。次の例を考えてみましょう。
<code class="go">package main import "fmt" func main() { var s string fmt.Scanln(&s) fmt.Println(s) return }</code>
入力が「月の 30 日」の場合、期待される出力は「月の 30 日」ですが、結果は「30」に切り捨てられます。これは、Scanln が入力の終了に改行文字を期待しているためです。
解決策:
スペースで区切られたトークンを読み取るには、fmt Scan ファミリを使用します:
<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>
このアプローチでは、入力に複数の変数を明示的に指定し、各トークンが正しく読み取られるようにします。
代替解決策: bufio.Scan
あるいは、 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>
このメソッドは入力を 1 行ずつ読み取り、入力プロセスの柔軟性と制御を強化します。
以上がGoのfmt.Scanlnを使用してスペースで区切られた文字列を読み取る方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。