使用fmt.Scanln 讀取空格分隔的字串
使用fmt.Scanln() 時,常常會遇到需要的情況文字被截斷。考慮以下範例:
<code class="go">package main import "fmt" func main() { var s string fmt.Scanln(&s) fmt.Println(s) return }</code>
輸入“30 of Month”,預期輸出將為“30 of Month”,但結果會被截斷為“30”。這是因為 Scanln 需要換行符號來終止輸入。
解:
要讀取空格分隔的標記,請使用fmt Scan 系列:
<code class="go">package main import ( "fmt" ) func main() { var s1 string var s2 string fmt.Scanln(&s1, &s2) fmt.Println(s1) fmt.Println(s2) return }</code>
此方法明確指定多個輸入變量,確保正確讀取每個標記。
替代解決方案:bufio.Scan
或者,考慮使用bufio Scanner:
<code class="go">package main import ( "bufio" "fmt" "os" ) func main() { scanner := bufio.NewScanner(os.Stdin) for scanner.Scan() { s := scanner.Text() fmt.Println(s) } if err := scanner.Err(); err != nil { os.Exit(1) } }</code>
此方法逐行讀取輸入,為輸入過程提供更大的靈活性和控制。
以上是如何在 Go 中使用 fmt.Scanln 讀取空格分隔的字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!