如何使用fmt.scanln 解析空格分隔的字串
fmt.scanln 是一個用於從標準輸入讀取輸入並掃描的函數將其轉換為結構化變數。然而,當讀取以空格分隔的字串時,可能會遇到一些意想不到的行為。
預設情況下,fmt.scanln 在第一個換行符處停止掃描。這可能會導致使用者輸入包含多個空格分隔的單字的字串,但僅捕獲第一個單字的情況。
例如,考慮以下程式碼:
<code class="go">package main import "fmt" func main() { var s string fmt.Scanln(&s) fmt.Println(s) return }</code>
當使用者輸入“31 of Month”,只有“31”被捕獲到 s 變數中。出現這種情況是因為 fmt.scanln 在遇到空格字元(空白字元)後停止掃描。
要解決此問題並捕獲多個空格分隔的單詞,您可以執行以下任一操作:
使用多個fmt.Scanln 語句:
<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>
使用緩衝掃描器:
<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中文網其他相關文章!