本文介绍了从golang语言中fmt包从标准输入获取数据的Scan系列函数、从io.Reader中获取数据的Fscan系列函数以及从字符串中获取数据的Sscan系列函数的用法,感兴趣的小伙伴们可以参考一下 在Golang中,`fmt`包提供了一系列的扫描函数,用于从不同的输入源读取数据。这些函数在处理用户输入或解析数据时非常有用。在本文中,我们将深入探讨`fmt.Scan`、`fmt.Scanf`和`fmt.Scanln`这三个函数,以及它们的变体`Fscan`、`Fscanln`和`Fscanf`,它们从`io.Reader`对象中读取数据。同时,也会提到`Sscan`系列函数,用于从字符串中提取数据。 1. `fmt.Scan`: `fmt.Scan`函数从标准输入(通常是键盘)读取数据,并将由空白字符(如空格、制表符和换行符)分隔的值存储到传入的接口变量中。例如,以下代码会读取用户输入的姓名、年龄和婚姻状态: ```go var name string var age int var married bool fmt.Scan(&name, &age, &married) ``` 用户在终端输入`Alfred 26 false`,然后按回车键,程序将分别将`Alfred`、`26`和`false`赋值给相应的变量。 2. `fmt.Scanf`: `fmt.Scanf`与`fmt.Scan`类似,但它接受一个格式字符串来定义输入的格式。这使得我们可以精确控制输入数据的类型和格式。例如: ```go var name string var age int var married bool fmt.Scanf("1:%s 2:%d 3:%t", &name, &age, &married) ``` 用户需要按照`1:Alfred 2:26 3:false`的格式输入,否则`Scanf`将无法正确解析数据。 3. `fmt.Scanln`: `fmt.Scanln`与`fmt.Scan`的主要区别在于它会在遇到换行符时停止扫描,而`fmt.Scan`会一直扫描到下一个空白字符。这意味着`Scanln`更适合需要用户按回车确认的情况。 ```go var name string var age int var married bool fmt.Scanln(&name, &age, &married) ``` 在这种情况下,用户输入`Alfred 26 false`并按下回车,程序就会读取数据。 4. `Fscan`、`Fscanln`和`Fscanf`: 这些函数与上述的`Scan`、`Scanln`和`Scanf`类似,但它们接收一个`io.Reader`作为参数,可以从任何实现了`Read`方法的输入源(如文件或网络连接)读取数据。例如,`Fscan`可以从文件中读取数据,而`Fscanf`则允许我们根据指定的格式从文件中解析数据。 5. `Sscan`系列: `fmt.Sscan`、`fmt.Sscanf`和`fmt.Sscanln`则是用于从字符串中提取数据的函数。这对于处理预定义的字符串输入非常有用。 总结来说,Golang的`fmt`包中的扫描函数提供了一种灵活的方式来读取和解析不同来源的数据。`Scan`系列适用于简单从标准输入读取分隔的数据,`Scanf`提供了格式化的输入处理,`Scanln`则在遇到换行符时结束扫描,而`Fscan`系列和`Sscan`系列则扩展了这些功能以适应不同的输入源和字符串处理。了解和熟练使用这些函数,可以帮助我们更有效地编写处理用户输入和解析数据的Go程序。
- 粉丝: 3
- 资源: 922
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Using a Designer UI File in Your Qt for Python Application 代码示例
- QOpenGLWidget显示点云
- qt安装看这一篇就够了 qt入门教程学习攻略心得总结
- Bluefield DPU user manual文档
- java安装教程 java安装前的准备 java教程学习
- 串联混合动力汽车模型预测能量管理程序设计,在MATLAB环境下,利用脚本编写串联模型,并基于CasADi模型预测控制算法工具,结
- wps学习攻略及详细教程学习功能总结
- 基于事件触发机制的多智能体系统事件触发控制,Matlab数值仿真实验
- Ubuntu 20.04.5 远程桌面配置及管理
- C#汇川全系列上位机适配源码 C#上位机读写PLC案例,TCP通信,通讯部分封装成类,没有加密,都是源码,注释齐全,纯源码,此版