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