去语言相当于scanf%[^ \ n]

时间:2016-06-04 06:36:53

标签: go

for go language

fmt.Scanln("%s",&v)

这应该将整行作为字符串存储在v变量右边..?但是当我打印时,我只得到第一个单词,并且没有捕获空格后的所有内容。

2 个答案:

答案 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)
}