Golang接受带有空格的输入。

huangapple go评论114阅读模式
英文:

golang accepting input with spaces

问题

我刚开始学习GO语言,我了解在GO中,SCANF使用空格作为分隔符。

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

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

英文:

I'm just starting with GO and I understand that SCANF uses spaces as a separator in GO.

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

I cant really find a way to accepts inputs that contain spaces as valid characters.

答案1

得分: 40

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

  1. import (
  2. "bufio"
  3. "os"
  4. )
  5. in := bufio.NewReader(os.Stdin)
  6. line, err := in.ReadString('\n')

你可以使用bufio.Reader和os.Stdin来读取标准输入中的内容。以上代码片段展示了如何导入必要的包,创建一个bufio.Reader对象,并使用ReadString方法读取输入中的一行内容。

英文:

you can use bufio.Reader and os.Stdin:

  1. import(
  2. "bufio"
  3. "os"
  4. )
  5. in := bufio.NewReader(os.Stdin)
  6. line, err := in.ReadString('\n')

答案2

得分: 38

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

fmt Scan方法将每个以空格分隔的值存储到连续的参数中。如果在标准输入中有三个参数,可以使用以下代码:

  1. package main
  2. import "fmt"
  3. func main() {
  4. var day, year int
  5. var month string
  6. fmt.Scanf("%d %s %d", &day, &month, &year)
  7. fmt.Printf("captured: %d %s %d\n", day, month, year)
  8. }

如果你不知道要读取的内容的完整格式,只想要整行的话,可以使用bufio:

  1. package main
  2. import (
  3. "bufio"
  4. "os"
  5. )
  6. func main() {
  7. scanner := bufio.NewScanner(os.Stdin)
  8. scanner.Scan() // 使用`for scanner.Scan()`来持续读取
  9. line := scanner.Text()
  10. fmt.Println("captured:", line)
  11. }
英文:

Similar to @chlin's answer, use bufio to capture whole lines.

The fmt Scan methods store each space separated value into a successive arguments. Three arguments on stdin would require something like:

  1. package main
  2. import "fmt"
  3. func main() {
  4. var day, year int
  5. var month string
  6. fmt.Scanf("%d %s %d", &day, &month, &year)
  7. fmt.Printf("captured: %d %s %d\n", day, month, year)
  8. }

If you don't know the full format of what you will be reading and just want the line, use bufio:

  1. package main
  2. import (
  3. "bufio"
  4. "os"
  5. )
  6. func main(){
  7. scanner := bufio.NewScanner(os.Stdin)
  8. scanner.Scan() // use `for scanner.Scan()` to keep reading
  9. line := scanner.Text()
  10. fmt.Println("captured:",line)
  11. }

答案3

得分: -5

当用户按下回车键时,表示输入结束。

这看起来像是fmt.Scanln

Scanln类似于Scan,但在换行符处停止扫描,并且在最后一项之后必须有一个换行符或EOF。

英文:

> When the user presses enter it signifies the end of input

That looks like fmt.Scanln

> Scanln is similar to Scan, but stops scanning at a newline and after the final item there must be a newline or EOF.

huangapple
  • 本文由 发表于 2014年12月11日 10:52:21
  • 转载请务必保留本文链接:https://go.coder-hub.com/27414598.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定