如何使用 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中文网其他相关文章!