go语言中Scan、Scanln、Scanf的区别

1 go语言中的输入操作

在go语言中我们可以通过fmt包中的三种方法实现输入操作:

  • fmt.Scan()
  • fmt.Scanln()
  • fmt.Scanf()

2 fmt.Scan()

2.1 简单使用

Scan()可以输入一个值,也可以同时输入多个值,在2.2中会说明。

	//声明一个要输入的变量
	var name string
	fmt.Print("请输入用户名:")
	//使用Scan来实现输入操作,记得括号中的变量名前面要加一个寻址符,相当于name的内存地址。Scan实现在它的内存空间中赋值,此时name的值就是我们输入的值。
	fmt.Scan(&name)
	fmt.Printf(name)

2.2 Scan()的返回值

Scan()使用时应注意以下几点:

  • 在使用Scan()时,用户输入完成后会返回两个值

    1. count:用户输入了几个值
    2. err:用户输入错误,提示错误信息
  • 当输入多个值的时候,要用空格分开输入

  • 若不想使用某一个返回值可以用_来接收,若两个返回值都不想要只是单纯的输入,那就直接写等号后面的即可。

  • 【注意】Scan()要求,若要输入两个值,那就必须输入两个,若要输入三个值,那就必须是三个。否则程序会一直等待,不会执行下面的程序。

    fmt.Print("please enter the userName and age:")
    var userName string
    var age int
    count, _ := fmt.Scan(&userName, &age)
    fmt.Println("the userName is:", userName, "\nthe age is:", age)
    fmt.Println("user has entered", count, "values")

控制台输入liam 23后:

please enter the userName and age:liam 23
the userName is: liam 
the age is: 23
user has entered 2 values

3 fmt.Scanln()

Scan()Scanln()用法与功能效果完全一样,但只有一个不同点:

  • Scan()要求,若要输入两个值,那就必须输入两个,若要输入三个值,那就必须是三个。否则程序会一直等待,不会执行下面的程序;
  • Scanln()没有这个强制的要求,如果要求我们输入两个值,但只输入一个值,那么回车后程序依然会执行。

总结:Scan()必须等待所要求的值输入完成才能执行程序,但是Scanln()不管输入的数据是否完成,只要回车就直接执行。

4 fmt.Scanf()

特点:

  • 它也有两个返回值count和err;
  • 如果在Scanf()中写了两个输入值但是只输入一个,那样未输入的值就是该值类型的默认值;
  • 支持用户定制化输入。
    fmt.Print("please enter the userName:")
    var userName string
    count, _ := fmt.Scanf("%s", &userName)
    fmt.Println("the userName is:", userName)
    fmt.Println("user has entered", count, "values")
posted @   雪碧锅仔饭  阅读(677)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示