for go language
fmt.Scanln("%s",&v)
这应该将整行作为字符串存储在v变量右边..?但是当我打印时,我只得到第一个单词,并且没有捕获空格后的所有内容。
答案 0 :(得分:2)
扫描系列功能扫描以空格分隔的标记。
如果你阅读了fmt文档,那么为什么你只能得到输入的第一个单词就很明显了。
扫描扫描从标准输入读取的文本,连续存储 空格分隔的值到连续的参数中。换行计为 空间。它返回成功扫描的项目数。如果那样的话 小于参数的数量,错误将报告原因。
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)
}
答案 1 :(得分:1)
要阅读整行,您可以使用bufio
包:
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
r := bufio.NewReader(os.Stdin)
str, _ := r.ReadString('\n')
fmt.Println(str)
}