首頁 > 後端開發 > Golang > 為什麼 Go 中 fmt.Scanf 不總是等待使用者輸入?

為什麼 Go 中 fmt.Scanf 不總是等待使用者輸入?

Barbara Streisand
發布: 2024-12-19 07:49:09
原創
170 人瀏覽過

Why Doesn't fmt.Scanf Always Wait for User Input in Go?

理解 Go 中 fmt.Scanf 的問題

在 Go 中,fmt.Scanf 函數可讓您讀取使用者輸入並將其儲存在指定的變數中。然而,有時使用者會遇到一個問題,即 fmt.Scanf 在第一次掃描後不等待使用者輸入,而是立即轉到後續提示。

說明

在 Go 中,fmt.Scanf 會讀取從標準輸入到第一個分隔符號(通常是換行符號)的字元。在 Go 的早期版本中,它不認為回車符號 (r) 後面跟著換行符號 (n) 作為 Windows 系統上的有效分隔符號。這導致 fmt.Scanf 在讀取使用者輸入的第一個字元後過早結束。

解決方法

要解決此問題,一個簡單的解決方法是在格式字串中明確使用 n 分隔符號傳遞給 fmt.Scanf。例如:

var inputSquare float64
fmt.Scanf("%f\n", &inputSquare)
登入後複製

透過在格式字串中包含 n,您可以告訴 fmt.Scanf 在考慮輸入完成之前等待換行符。這可確保程式暫停,直到使用者按 Enter 並完成輸入。

使用者輸入驗證

要驗證使用者輸入的整數,您可以使用 strconv.ParseInt 函數,該函數檢查是否輸入的字串可以解析為整數並傳回遇到的任何錯誤。例如:

inputSquare, err := strconv.ParseInt(inputSquareString, 10, 64)
if err != nil {
    // Handle error
}
登入後複製

結論

透過使用上述技術,可以有效解決 Go 中 fmt.Scanf 不等待使用者輸入的問題,並實現正確的整數輸入驗證。

以上是為什麼 Go 中 fmt.Scanf 不總是等待使用者輸入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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