golang接受带空格的输入

时间:2014-12-11 02:52:22

标签: input go space

我刚开始使用GO,我知道SCANF在GO中使用空格作为分隔符。

fmt.Scanf("%s",&input)

我真的找不到接受包含空格作为有效字符的输入的方法。

3 个答案:

答案 0 :(得分:15)

你可以使用bufio.Reader和os.Stdin:

value = (uint64_t)((*ptr1  >> 16) | (*ptr2 & 0x000000000000ffff) << 48);

答案 1 :(得分:8)

与@ chlin的答案类似,使用bufio捕获整行。

fmt Scan方法将每个空格分隔值存储到连续的参数中。关于stdin的三个论点需要类似的东西:

package main

import "fmt"

func main() {
    var day, year int
    var month string
    fmt.Scanf("%d %s %d", &day, &month, &year)
    fmt.Printf("captured: %d %s %d\n", day, month, year)
}

如果您不知道您将要阅读的内容的完整格式并且只想要该行,请使用bufio:

package main

import (
  "bufio"
  "os"
)

func main(){
    scanner := bufio.NewScanner(os.Stdin)
    scanner.Scan() // use `for scanner.Scan()` to keep reading
    line := scanner.Text()
    fmt.Println("captured:",line)
}

答案 2 :(得分:4)

  

当用户按Enter键时,表示输入结束

看起来像fmt.Scanln

  

ScanlnScan类似,但停止在换行符处扫描,在最终项目之后必须有换行符或EOF。