問題: 使用fmt.Scanf() 取得使用者輸入時,可以有效處理無效輸入變得具有挑戰性。如果使用者輸入非數字字符,循環會繼續迭代,從而產生不良體驗。
解決方案:
要解決此問題,刷新至關重要每個輸入請求之後的 stdin(標準輸入)。透過這樣做,輸入緩衝區中任何剩餘的無效字元都將被丟棄,確保後續輸入請求以乾淨的狀態開始。
使用 fmt.Scanln 的解決方案:
fmt.Scanln 函數可用於從 stdin 讀取字串並自動處理換行符。透過使用fmt.Scanln,可以簡化循環,而不需要明確刷新標準輸入:
<code class="go">package main import ( "fmt" ) func main() { fmt.Println("Please enter an integer: ") // Read in an integer var userI int _, err := fmt.Scanln(&userI) if err != nil { fmt.Printf("Error: %s", err.Error()) return } fmt.Println(userI) }</code>
替代解決方案:
在沒有內建的情況下stdin 刷新函數,可以採用替代解決方案:
結論:
雖然Go 中沒有內建的stdin 刷新函數,但使用fmt.Scanln 或替代解決方案可以有效處理無效輸入並保持用戶友好的循環。
以上是Go 中 `fmt.Scanf()` 之後如何處理無效輸入並刷新標準輸入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!