首頁 > 後端開發 > Golang > 主體

如何在 Go 中處理無效的使用者輸入:刷新標準輸入和替代方案

DDD
發布: 2024-10-28 09:04:30
原創
640 人瀏覽過

How to Handle Invalid User Input in Go: Flushing Stdin and Alternatives

了解 Go 中的輸入消耗:刷新和替代方案

透過終端與使用者互動時,處理無效輸入可能具有挑戰性。在 Go 中,當使用者輸入非整數值時,使用 fmt.Scanf() 讀取輸入可能會遇到問題。這是因為 fmt.Scanf() 不會消耗整行,留下可能幹擾後續輸入的殘留字元。

要解決此問題,一種選擇是在無效輸入後明確刷新輸入緩衝區。然而,Go 並沒有提供直接刷新 Stdin 的方法。

替代方法:

  1. 使用fmt.Scanln(): fmt.Scanln() 一行讀取,包括空格和空格和空格換行符。它消耗整行,無需明確刷新。
<code class="go">fmt.Println("Please enter an integer:")
var userI int
_, err := fmt.Scanln(&userI)
if err != nil {
    fmt.Println("Sorry, invalid input. Please try again:")
}</code>
登入後複製
  1. 自訂輸入處理: 建立自訂函數來讀取和驗證使用者輸入,使用並丟棄無效條目,直到獲得有效輸入。
<code class="go">func GetUserInputInt() int {
    var userI int
    for {
        fmt.Println("Please enter an integer:")
        _, err := fmt.Scanf("%d", &userI)
        if err == nil {
            return userI
        }
        fmt.Println("Sorry, invalid input. Please try again:")
        fmt.Scanln() // Discard invalid input
    }
}</code>
登入後複製

以上是如何在 Go 中處理無效的使用者輸入:刷新標準輸入和替代方案的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!