在编程中,需要接收用户输入的数据,可以使用fmt包的方法,主要用fmt.Scanln()和fmt.Scanf()。
fmt.Scanln()和fmt.Scanf()并非获取在运行go run时就携带的参数,而是程序运行后,控制台再输入的参数。程序运行到函数这里,会等待用户输入。这两个函数的区别是:
fmt.Scanln:每次捕获单条命令
fmt.Scanf:可以指定输入格式,通过特定分隔符获取多个参数
举例演示fmt.Scanln()用法:
package main
import "fmt"
//fmt.Scanln方法
func main() {
var name string
var age byte
var salary float64
var isPass bool
fmt.Println("请输入姓名")
fmt.Scanln(&name) //fmt.Scanln获取键盘输入的参数
if name == "" {
fmt.Println("没有输入姓名")
}
fmt.Println("请输入年龄")
fmt.Scanln(&age)
if age == 0 {
fmt.Println("没有输入年龄")
}
fmt.Println("请输入薪水")
fmt.Scanln(&salary)
if salary == 0 {
fmt.Println("没有输入薪水")
}
fmt.Println("请输入考试结果,不输入默认为不通过")
fmt.Scanln(&isPass)
var result = "姓名\t" + "年龄\t" + "薪水\t" + "是否通过考试\n" + name + "\t" + fmt.Sprintf("%d", age) + "\t" + fmt.Sprintf("%f", salary) + "\t" + fmt.Sprintf("%v", isPass)
fmt.Println(result)
}
运行结果:
演示fmt.Scanf()用法:
package main
import "fmt"
// fmt.Scanf()用法
func main() {
var name string
var age int
var salary float32
var isPass bool
fmt.Println("请输入你的姓名、年龄、薪水、考试结果,使用空格隔开")
fmt.Scanf("%s %d %f %t", &name, &age, &salary, &isPass) //通过fmt.Scanf()获取多个参数
var result = "姓名\t" + "年龄\t" + "薪水\t" + "是否通过考试\n" + name + "\t" + fmt.Sprintf("%d", age) + "\t" + fmt.Sprintf("%f", salary) + "\t" + fmt.Sprintf("%v", isPass)
fmt.Println(result)
}
运行结果: