go语言fmt.Scanln("%s",&v)这应该将整行存储为 v 变量中的字符串,对..?但是当我打印时,我只得到第一个单词,而空格之后的所有内容都没有被捕获。
2 回答
哈士奇WWW
TA贡献1799条经验 获得超6个赞
Scan 系列函数扫描空格分隔的标记。
如果您阅读fmt文档,就会很明显为什么您只会得到输入的第一个单词。
Scan 扫描从标准输入读取的文本,将连续的空格分隔值存储到连续的参数中。换行符算作空格。它返回成功扫描的项目数。如果这小于参数的数量,则 err 将报告原因。
bufio.Scan 是你需要的。
// read standard input as a set of lines.
scanner := bufio.NewScanner(os.Stdin)
for scanner.Scan() {
fmt.Println(scanner.Text()) // Println will add back the final '\n'
}
if err := scanner.Err(); err != nil {
fmt.Fprintln(os.Stderr, "reading standard input:", err)
}
开满天机
TA贡献1786条经验 获得超13个赞
要阅读整行,您可以使用bufio包:
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
r := bufio.NewReader(os.Stdin)
str, _ := r.ReadString('\n')
fmt.Println(str)
}
- 2 回答
- 0 关注
- 132 浏览
添加回答
举报
0/150
提交
取消