首頁 >後端開發 >Golang >你能在沒有條件檢查的情況下逃脫 Go `bufio.Scanner` 輸入循環嗎?

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

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-14 14:52:02551瀏覽

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

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