使用 Fmt.Scanln 从字符串中读取空格分隔的字符串
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”,而不是预期的“31 of Month”。这是因为 Scanln 将输入视为单个标记,忽略空格。
要解决此问题,您可以使用以下解决方案:
1.同时扫描多个变量
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>
此代码将正确输出“31”和“月份”。
2。使用 Bufio Scanner
bufio 包简化了从各种来源(包括字符串)读取输入的过程。
<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>
使用此代码,您可以读取并打印每一行单独。
以上是如何使用 Fmt.Scanln 从字符串中读取空格分隔的字符串?的详细内容。更多信息请关注PHP中文网其他相关文章!