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