首頁 > 後端開發 > Golang > go中接受有空格的輸入

go中接受有空格的輸入

Susan Sarandon
發布: 2024-12-06 19:26:12
原創
844 人瀏覽過

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 中的 rune by rune)
5.在每次迭代中,我們都會取得該符文並將其新增或附加到我們的文字變數中。
6.當它讀取「n」時,它會中斷循環,我們會在 text 變數中得到輸入行。
7.這裡,rune也可以是空格字元.
所以,從字面上看,它甚至讀作“n”。

(讀取空格字元是 Scanf("%c",&var_name) 的例外,這正是我們想要的!)

注意:它也解決了我們讀取多行時遇到的問題。我的意思是,當我們讀取多行時,我們會得到意外的輸入或行為(我不知道確切的原因)原因! )。
但在這裡,由於我們正在逐個字元讀取,也包括“n”(到臨時變數中),因此將消除所有這些錯誤!

以上是go中接受有空格的輸入的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板