fmt.Scanln 錯誤:預期換行
在Go 中使用fmt.Scanln 函數時,可能會遇到「預期換行」錯誤。當輸入在預期分隔符號(通常是空格)之前包含換行符時,就會發生這種情況。為了解決這個問題,讓我們深入研究 fmt.Scan 和 fmt.Scanln 的行為。
fmt.Scan 從標準輸入讀取空格分隔的值,將換行符視為空格。它將這些值指派給相應的參數,傳回成功掃描的項目的計數。
fmt.Scanln 的行為類似,但在換行符號處停止掃描。重要的是,輸入必須以換行或 EOF 結尾才能成功完成。
為了說明這一點,請考慮以下輸入:
123 123.456 everybody loves ice cream
使用fmt.Scan 時,輸出將為:
read 1 integer: 123 read 1 float64: 123.456 read 1 string: everybody Error: Scan: expected newline
fmt.Scan 將「每個人都喜歡冰淇淋」解釋為兩個字串,從而導致錯誤。
但是,如果您使用fmt.Scanln 作為相同的輸入,則輸出將是:
read 1 integer: 123 read 1 float64: 123.456 read 1 string: everybody loves ice cream
fmt.Scanln 將換行符識別為分隔符,並正確地將整行解析為單一字串參數。
讀取以換行符號結尾的行去吧,你可以使用 bufio.Reader 及其 ReadString 方法:
line, err := buffer.ReadString('\n')
以上是為什麼 Go 的 fmt.Scanln 給出「預期換行符」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!