文章目录
Golang语法
前言
博主介绍:
– 我是了 凡 微信公众号【了凡银河系】期待你的关注。未来大家一起加油啊~
文章目录
三种输入函数的区别
首先它们都是在fmt包下的三个扫描函数,类似于java中是Scanner一样,在Go语言中使用&取值指针来进行获值
第一种:fmt.Scan
输入:读取以空白符分割的值返回到地址中进行修改,换行视为空白符
返回值:错误处理,返回值中有一个int类型的值是返回正确的数量,有一个err是错误的原因
var ( // 定义全局变量
name int
age int
married int
)
ag1, err := fmt.Scan(&name,&age,&married) 返回类型根据使用场景可以不写,但是根据代码规范,err都要处理,加上在这里为了更加严谨,确实需要err来处理
fmt.Print(err) // 这里如果出错,则显示出错的原因
fmt.Println(ag1) // 这个返回参数取到的是成功了几个
fmt.Printf("扫描结果:name:%d age:%d married:%d \n",name,age,married) // Scan读取以空白为分割的值保存给参数中,换行符视为空白符,如果返回的数据比提供的参数少,会返回错误原因
成功结果:
有错误结果:
开头错误则直接全部错误:
第二种 fmt.Scanf
它与Scan比更加严谨,使用format读取空白符,在输入时也必须输入要输入的数据,适用场景学生输入账号,性别,而且必须要根据指定的方式输入,顺序也不可以改变
var (
name string
age int
married bool
)
ag1, err := fmt.Scanf("1:%s 2:%d 3:%t", &name, &age, &married) // 这个函数中参数前必须填入标识格式如1: 2: ...
fmt.Println(ag1)
fmt.Println(err)
fmt.Printf("扫描结果 name:%s age:%d married:%t", name, age, married)
成功结果:
有错误结果:
第三种 fmt.Scanln
Scanln 类似 Scan,但它在遇到换行时才停止扫描。最后一个数据后面必须有换行或者到达结束位置。使用场景就是只要换行就结束
返回错误和Scan一样
var (
name string
age int
married int
)
ag1, err := fmt.Scanln(&name,&age,&married)
fmt.Println(ag1)
fmt.Println(err)
fmt.Printf("扫描结果 name:%s age:%d married:%d \n", name, age, married)
成功结果:
有错误结果:
这里有一个错误
var (
name string
age int
married bool // 这里由原本的int改变成了bool
)
ag1, err := fmt.Scanln(&name,&age,&married)
fmt.Println(ag1)
fmt.Println(err)
fmt.Printf("扫描结果 name:%s age:%d married:%t \n", name, age, married)
错误显示:
欢迎大家留言探讨