Go语言获取标准输入

幸运草 2020年4月20日21:29:45函数代码评论阅读模式

Go语言 fmt 包下有 fmt.Scan、fmt.Scanf、fmt.Scanln 三个函数,可以在程序运行过程中获取用户输入。

func Scan(a ...interface{}) (n int, err error)

Scan从标准输入扫描文本,将成功读取的空白分隔的值保存进成功传递给本函数的参数。换行视为空白。返回成功扫描的条目个数和遇到的任何错误。如果读取的条目比提供的参数少,会返回一个错误报告原因。

func Scanf(format string, a ...interface{}) (n int, err error)

Scanf从标准输入扫描文本,根据format 参数指定的格式将成功读取的空白分隔的值保存进成功传递给本函数的参数。返回成功扫描的条目个数和遇到的任何错误。

func Scanln(a ...interface{}) (n int, err error)

Scanln类似Scan,但会在换行时才停止扫描。最后一个条目后必须有换行或者到达结束位置。

获取标准输入示例

示例一:Scan 函数应用

package main


import  "fmt"


func  main() {

    fmt.Println("Please enter your firstname and lastname ")

    var  firstname, lastname  string

    fmt.Scan(&firstname, &lastname)

    fmt.Println("hello,", firstname, "and", lastname)

}

编译后运行,在窗口中输入:

oldboy golang

输出:

hello, oldboy and golang

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

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

Please enter your firstname and lastname 
oldboy golang
hello, oldboy and golang

再次运行,这次我们输入时换行输入:

Please enter your firstname and lastname 
oldboy
golang
hello, oldboy and golang

在第二行、第三行 oldboy 和 golang 中间是敲了回车的,这是Scan和Scanln的区别。Scanln只要收到回车就不会继续接收输入了。

示例二:Scanf 函数应用

package main


import  "fmt"


func  main() {

    fmt.Println("Please enter your names ")

    var  firstname, lastname  string

    fmt.Scanf("%s , %s", &firstname, &lastname)

    fmt.Println("hello,", firstname, "and", lastname)

}

编译运行:

Please enter your firstname and lastname 
oldboy , golang
hello, oldboy and golang

注意:

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

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

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

示例三:Scanln 函数应用

package main


import  "fmt"


func  main() {

    fmt.Println("Please enter your names ")

    var  firstname, lastname  string

    fmt.Scanln(&firstname, &lastname)

    fmt.Println("hello,", firstname, "and", lastname)

}

编译运行:

Please enter your firstname and lastname 
oldboy golang
hello, oldboy and golang

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

其它类似函数

func Fscan(r io.Reader, a ...interface{}) (n int, err error)
func Fscanln(r io.Reader, a ...interface{}) (n int, err error)
func Fscanf(r io.Reader, format string, a ...interface{}) (n int, err error)

功能同 fmt.Scan、fmt.Scanf、fmt.Scanln 三个函数,只不过从 r 中读取数据。

func Sscan(str string, a ...interface{}) (n int, err error)
func Sscanln(str string, a ...interface{}) (n int, err error)
func Sscanf(str string, format string, a ...interface{}) (n int, err error)

功能同 fmt.Scan、fmt.Scanf、fmt.Scanln 三个函数,只不过从 str 中读取数据。

特别声明:以上文章内容仅代表作者本人观点,不代表变化吧观点或立场。如有关于作品内容、版权或其它问题请于作品发表后的30日内与变化吧联系。

  • 赞助本站
  • 微信扫一扫
  • weinxin
  • 加入Q群
  • QQ扫一扫
  • weinxin
幸运草
Go语言中的常量 函数代码

Go语言中的常量

1 概述 常量,一经定义不可更改的量。功能角度看,当出现不需要被更改的数据时,应该使用常量进行存储,例如圆周率。从语法的角度看,使用常量可以保证数据,在整个运行期间内,不会被更改。例如当前处理器的架构...
Go语言的接口 函数代码

Go语言的接口

Go语言-接口 在Go语言中,一个接口类型总是代表着某一种类型(即所有实现它的类型)的行为。一个接口类型的声明通常会包含关键字type、类型名称、关键字interface以及由花括号包裹的若干方法声明...
Go语言支持的正则语法 函数代码

Go语言支持的正则语法

1 字符 语法 说明 . 任意字符,在单行模式(s标志)下,也可以匹配换行 字符类 否定字符类 d Perl 字符类 D 否定 Perl 字符类 ASCII 字符类 否定 ASCII 字符类 pN U...
Go语言的包管理 函数代码

Go语言的包管理

1 概述 Go 语言的源码复用建立在包(package)基础之上。包通过 package, import, GOPATH 操作完成。 2 main包 Go 语言的入口 main() 函数所在的包(pa...

发表评论