在沒有條件檢查的情況下逃避輸入循環
在Go 中,bufio.Scanner 允許您從控制台逐行讀取輸入。但是,標準 Scan 函數會自動前進到下一個標記,如果沒有明確的中斷條件,可能會導致無限循環。
文件指出 Scan 在到達輸入末端時傳回 false。這是否意味著您可以跳過跳出循環的條件檢查?
文件誤解
不幸的是,您誤解了文件。 Scanner 使用的預設分割函數是 ScanLines,它將每行文字作為單獨的標記傳回。
ScanLines 的行為
ScanLines 有兩個關鍵行為:
輸入的最終非空白行將被傳回,即使它沒有換行符。
打破循環
因此,單獨的空白行並不表示輸入結束。只有在達到文件結束 (EOF) 條件時,循環才會中斷,通常由按 Ctrl-D 等操作觸發。
解決方案
使用自訂split 函數,遇到空白行時傳回false
但是,為了簡單起見,通常建議保留條件檢查並避免潛在的邊緣情況。以上是你能在沒有條件檢查的情況下逃脫 Go `bufio.Scanner` 輸入循環嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!