首頁 > 後端開發 > Golang > Go 中處理無效輸入時如何刷新標準輸入(Stdin)?

Go 中處理無效輸入時如何刷新標準輸入(Stdin)?

Linda Hamilton
發布: 2024-10-29 02:32:30
原創
369 人瀏覽過

How to Flush Standard Input (Stdin) in Go When Dealing with Invalid Inputs?

Go 中的刷新標準輸入(Stdin)

在Go 中,當使用fmt.Scanf() 讀取使用者輸入時,至關重要處理無效輸入以防止循環問題。一個常見的挑戰是在輸入無效條目後無法清除輸入緩衝區,導致後續輸入無法正確解析。這可以透過刷新 Stdin 來解決。

fmt.Scanln()

解決此問題的一種方法是使用 fmt.Scanln(),它會讀取完整的來自輸入的行。它消耗指定格式說明符後的剩餘輸入,從而無需明確循環。

<code class="go">func someFunc() {
    fmt.Printf("Please enter an integer: ")

    // Read in an integer
    var i int
    _, err := fmt.Scanln(&i)
    if err != nil {
        fmt.Printf("Error: %s", err.Error())

        // If int read fails, read as string and forget
        var discard string
        fmt.Scanln(&discard)
        return
    }
    fmt.Printf("Input contained %d", i)
}</code>
登入後複製

使用 io.Scanf()

或者,io.Scanf () 可用於從輸入中讀取特定格式,即使它不完整。如果輸入與格式不匹配,則剩餘字元將保留在輸入緩衝區中。若要在發生此類錯誤後清除緩衝區,請使用:

<code class="go">reader.Reset(reader.Bytes())</code>
登入後複製

其中 reader 是 io.Reader 物件。

其他注意事項

如果如果沒有合適的內建函數,請考慮使用自訂函數,函數會連續讀取並丟棄輸入,直到到達換行符。此方法可確保從緩衝區中清除所有剩餘輸入。

請記住,正確處理無效輸入對於穩健的使用者互動至關重要。

以上是Go 中處理無效輸入時如何刷新標準輸入(Stdin)?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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