了解 Go 中的輸入消耗:刷新和替代方案
透過終端與使用者互動時,處理無效輸入可能具有挑戰性。在 Go 中,當使用者輸入非整數值時,使用 fmt.Scanf() 讀取輸入可能會遇到問題。這是因為 fmt.Scanf() 不會消耗整行,留下可能幹擾後續輸入的殘留字元。
要解決此問題,一種選擇是在無效輸入後明確刷新輸入緩衝區。然而,Go 並沒有提供直接刷新 Stdin 的方法。
替代方法:
<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>
<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中文網其他相關文章!