首頁  >  文章  >  後端開發  >  如何在 Go 中處理無效的使用者輸入:刷新標準輸入和替代方案

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

DDD
DDD原創
2024-10-28 09:04:30640瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn