18 Go 接收命令行输入Scan/Scanln/Scanf的使用

Go语言中接收命令行输入的信息,用fmt包的Scan/Scanln/Scanf等方法

类似JAVA中的Scanner类用法

func Scan

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

Scan从标准输入扫描文本,将成功读取的空白分隔的值保存进成功传递给本函数的参数。换行视为空白。

返回成功扫描的条目个数和遇到的任何错误。如果读取的条目比提供的参数少,会返回一个错误报告原因。

 1 package main
 2 
 3 import "fmt"
 4 
 5 func main() {
 6     var name string
 7     var age uint8
 8     var isGraduate bool
 9 
10     fmt.Println("使用Scan")
11     fmt.Println("请连续输入人员的姓名、年龄、是否毕业,输完一个按下回车:")
12     var abc,err = fmt.Scan(&name,&age,&isGraduate)
13     fmt.Println(abc)
14     fmt.Println(err)
15     fmt.Printf("接收的三个变量的值分别为:%s,%d,%t", name, age, isGraduate)
16 
17 }

 

 

func Scanln

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

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

 

 1 package main
 2 
 3 import "fmt"
 4 
 5 func main() {
 6     var name string
 7     var age uint8
 8     var isGraduate bool
 9 
10     fmt.Println("使用Scanln")
11     fmt.Println("请输入姓名:")
12     fmt.Scanln(&name)
13     fmt.Println("请输入年龄:")
14     fmt.Scanln(&age)
15     fmt.Println("请输入是否毕业:")
16     fmt.Scanln(&isGraduate)
17     fmt.Printf("接收的三个变量的值分别为:%s,%d,%t", name, age, isGraduate)
18 
19 }

 

 

 

3

func Scanf

func Scanf(a ...interface{}) string

Scanf采用默认格式将其参数格式化,串联所有输出生成并返回一个字符串。如果两个相邻的参数都不是字符串,会在它们的输出之间添加空格。

 PS:接口byte和rune类型的参数,最好使用Scanf("%c", byteVar),因为byte类型默认接口整形,不接收字符类型值

 1 package main
 2 
 3 import "fmt"
 4 
 5 func main() {
 6     var name string
 7     var age uint8
 8     var isGraduate bool
 9 
10     fmt.Println("使用Scanf")
11     fmt.Println("请连续输入人员的姓名、年龄、是否毕业,输完一个按一下空格:")
12     fmt.Scanf("%s %d %t", &name, &age, &isGraduate)
13     fmt.Printf("接收的三个变量的值分别为:%s,%d,%t", name, age, isGraduate)
14 
15 }

 

posted @ 2022-05-22 21:47  风铃如沧海  阅读(723)  评论(0编辑  收藏  举报