Gofmt包中Scan获取标准输入方式

作者:

文章目录
  • 可以在程序运行过程中获取用户输入。 fmt.Scan:获取输入 fmt.Scanf:获取输入,但是可以指定格式,go会根据格式解析参数 fmt.Scanln:获取一行的输入,只会获取到一行。
  • 以上为个人经验,希望能给大家一个参考,也希望大家多多支持风君子博客。 您可能感兴趣的文章: Go语言fmt包的具体使用 Go语言fmt模块的完整方法详解及示例代码 源码分析Go语言中gofmt实现原理 浅析Go语言中的缓冲区及其在fmt包中的应用 详解go 中的 fmt 占位符
  • 目录
    • Go fmt包下有三个函数
      • 示例1
      • 示例2
      • 示例3
    • 总结

      可以在程序运行过程中获取用户输入。

      • fmt.Scan:获取输入
      • fmt.Scanf:获取输入,但是可以指定格式,go会根据格式解析参数
      • fmt.Scanln:获取一行的输入,只会获取到一行。

      我们需要和gates和jobs问个好,代码:

      fmt.Println("Please enter your names")
      var a1, a2 string
      fmt.Scan(&a1, &a2)
      fmt.Println("hello,", a1, "and", a2)

      运行后,在窗口中输入:gates jobs

      输出:

      hello, gates and jobs

      可以看出,go把输入的参数按空格分开后,分别赋值给了a1和a2。

      整体运行结果(第二行是运行时用户输入的):

      Please enter your names
      gates jobs
      hello, gates and jobs

      如果我们输入时换行输入:

      Please enter your names
      gates
      jobs
      hello, gates and jobs

      可以看出gates和jobs中间是敲了回车的,这是Scan和Scanln的区别。Scan回车还可以继续接受,Scanln只要收到回车就不会继续接收输入了

      Scanln和Scan非常类似,只是Scanln只会接受一个回车,收到回车就扫描结束了。 

      var c1, c2 string
      fmt.Scanln(&c1, &c2)
      fmt.Println("hello,", c1, "and", c2)

      运行结果:

      Please enter your names
      gates jobs
      hello, gates and jobs

      如果换行输入,结果是:

      Please enter your names
      gates
      hello, gates and

      因为输入了gates后,回车,结果就打印出来了,没机会再输入jobs了,和Scan函数不一样。 

      fmt.Println("Please enter your names")
      var b1, b2 string
      fmt.Scanf("%s , %s", &b1, &b2)
      fmt.Println("hello,", b1, "and", b2)

      运行结果:

      Please enter your names
      gates , jobs
      hello, gates and jobs

      上面的示例,需要注意两点:

      1、Scanf中间有一个逗号,但逗号和%s间有空格,因为Scanf是用空格来区分不同的参数的。

      2、输入的参数gates , jobs格式与Scanf中指定的fmt要一致。

      3、中间的逗号,Scanf会自动格式匹配不会添加到变量中 

      以上为个人经验,希望能给大家一个参考,也希望大家多多支持风君子博客。

      您可能感兴趣的文章:

      • Go语言fmt包的具体使用
      • Go语言fmt模块的完整方法详解及示例代码
      • 源码分析Go语言中gofmt实现原理
      • 浅析Go语言中的缓冲区及其在fmt包中的应用
      • 详解go 中的 fmt 占位符

      站内搜索