从控制台读取多字符串

时间:2015-02-17 09:34:23

标签: go

我意识到以下只读取单个字符串 -

fmt.Scan(&sentence)

如何读取多字符串 - 如同,字符串sentence应存储包含多个单词的字符串。

2 个答案:

答案 0 :(得分:0)

您的问题是指扫描空间分隔输入。 fmt.Scan https://golang.org/pkg/fmt/#Scan的定义指出:

Scan scans text read from standard input, storing successive space-
separated values into successive arguments. Newlines count as space.
It returns the number of items successfully scanned. If that is less
than the number of arguments, err will report why.

因此,根据定义,扫描输入直到找到第一个空格。要进行扫描,让我们说在命令行中点击\n之前,您可以使用评论scanning spaces from stdin in Go中的代码:

scanner := bufio.NewScanner(os.Stdin)
for scanner.Scan() {
    return scanner.Text()
}
if err := scanner.Err(); err != nil {
    fmt.Fprintln(os.Stderr, "reading standard input:", err)
}

此线程也可能有用:https://groups.google.com/forum/#!topic/golang-nuts/r6Jl4D9Juw0

答案 1 :(得分:0)

也可以使用InputReader从控制台扫描和打印多个单词。

解决方案代码如下:

package main

import (
    "bufio"
    "fmt"
    "os"
)

func main() {
    inputReader := bufio.NewReader(os.Stdin)
    input, _ := inputReader.ReadString('\n')
    fmt.Println(input)
}

控制台输入:

让我们去吧!!!

控制台输出:

让我们去吧!!!

注意:

要运行GOLANG程序,请打开命令提示符或powershell,导航到程序文件所在的目录,然后键入以下命令:

go run file_name.go
相关问题