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

你能在沒有條件檢查的情況下逃脫 Go `bufio.Scanner` 輸入循環嗎?

Mary-Kate Olsen
發布: 2024-11-14 14:52:02
原創
489 人瀏覽過

Can You Escape the Go `bufio.Scanner` Input Loop Without a Conditional Check?

在沒有條件檢查的情況下逃避輸入循環

在Go 中,bufio.Scanner 允許您從控制台逐行讀取輸入。但是,標準 Scan 函數會自動前進到下一個標記,如果沒有明確的中斷條件,可能會導致無限循環。

文件指出 Scan 在到達輸入末端時傳回 false。這是否意味著您可以跳過跳出循環的條件檢查?

文件誤解

不幸的是,您誤解了文件。 Scanner 使用的預設分割函數是 ScanLines,它將每行文字作為單獨的標記傳回。

ScanLines 的行為

ScanLines 有兩個關鍵行為:

  1. 空行回傳:
  2. 空行回行,甚至是連續的空行,而不影響循環流程。
不帶換行符的非空白行:

輸入的最終非空白行將被傳回,即使它沒有換行符。

打破循環

因此,單獨的空白行並不表示輸入結束。只有在達到文件結束 (EOF) 條件時,循環才會中斷,通常由按 Ctrl-D 等操作觸發。

解決方案

  • 轉義沒有if 子句的輸入循環,您必須:
  • 透過檢查手動處理空白行的情況input.Text() == ""

使用自訂split 函數,遇到空白行時傳回false

但是,為了簡單起見,通常建議保留條件檢查並避免潛在的邊緣情況。

以上是你能在沒有條件檢查的情況下逃脫 Go `bufio.Scanner` 輸入循環嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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