ホームページ >バックエンド開発 >Golang >Goのfmt.Scanlnを使用してスペースで区切られた文字列を読み取る方法?

Goのfmt.Scanlnを使用してスペースで区切られた文字列を読み取る方法?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-03 13:15:03371ブラウズ

How to Read Space-Separated Strings with fmt.Scanln in Go?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。