ホームページ > バックエンド開発 > Golang > go でスペースを含む入力を取得する

go でスペースを含む入力を取得する

Susan Sarandon
リリース: 2024-12-06 19:26:12
オリジナル
840 人が閲覧しました

taking input with spaces in go

コンテクスト

私は、ユーザーに式の入力を求め、結果を出力し、次の式を再度求める電卓プログラムを作成していました。

問題

しかし、fmt.Scanln() を使用して行 (スペースやタブなどのスペース文字を含む) を読み取ると、問題が起こりました。

スペース文字 (そうです! 改行ではなくスペース文字) に遭遇すると、読み取りが停止しました。

例:
入力: 2 3.5(5)
獲得数: 2

しかし、さらにひどいことを言いました!

入力内の残りの文字はまだ存在しており、Scanln() 関数を再度呼び出すと、それらが読み取られます。

解決:

fmt パッケージには Scanf() と呼ばれる別の関数があります。
この男は違う!
形式指定子に基づいて入力を受け取り、指定した変数に格納します。
コード:

    text := ""

    fmt.Println("Enter expression:")
    for {
        var temp rune
        fmt.Scanf("%c", &temp)
        if temp == '\n' {
            break
        }
        text += string(temp)
    }
    fmt.Printf("You entered:\n %v", text)
ログイン後にコピー

説明:
1.「式を入力してください:」を出力します
2.ループが開始します
3.ループはユーザーからの入力を文字ごとに受け取ります(Go ではルーンごとに)
5.各反復で、そのルーンを取得してテキスト変数に追加または追加します。
6.「n」を読み取ると、ループが中断され、text 変数内の入力行が取得されます。
7.ここでは、ルーンは スペース文字 であることもできます。
つまり、文字通り「n」も読みます。

(スペース文字の読み取りは Scanf("%c",&var_name) の例外であり、これが私たちが望むことです!)

: 複数行を読んだときに発生する問題も解決します。つまり、複数行を読んだときに予期しない入力または動作が発生します(正確なことはわかりません)理由です!).
しかし、ここでは、「n」も(一時変数に)含めて文字ごとに読み取っているため、これらのエラーはすべて排除されます!

以上がgo でスペースを含む入力を取得するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート