Go语言标准输入输出库的基本使用教程
作者:良猿 发布时间:2023-08-25 19:44:11
fmt
fmt是go语言中的格式化输入输出库,其中主要分为两个部分,分别是输出部分和输入部分。
输出
Print函数的主要功能是输出,和Print类似的函数有以下几个:
func Print(a ...interface{}) (n int, err error)
:直接输出func Println(a ...interface{}) (n int, err error)
:和Print使用方法一样,但是不同与Print的是Println在每次打印完成之后会自动换行,如果使用Print想要换行需要在结尾加上\n
。func Printf(format string, a ...interface{}) (n int, err error)
:支持格式化输出字符串,在使用Printf时,可以在函数中使用格式化字符串占位。
代码示例:
func main() {
a := "Lee"
fmt.Print("大家好,")
fmt.Printf("我是:%s \n",a)
fmt.Println("我在学习Go语言")
}
运行结果:
常用占位符:
%d:整形十进制占位符
%b:整形二进制占位符
%o:整形八进制占位符
%x:整形十六进制占位符,其中a到f为小写
%X:整形十六进制占位符,其中A到F为大写
%s:字符串占位符
%f:浮点数占位符
%e:浮点数科学计数法:例如:1.234e+10
%E:浮点数科学计数法:例如:1.234E+10
%t:布尔类型占位符
%p:指针,十六进制表示,并加上0x前缀
Fprint
Fprint系列函数同样有以下三个,该函数会将内容输出到io.Writer接口类型的变量w中,通常用于朝文件中写入数据。
func Fprint(w io.Writer, a ...interface{}) (n int, err error)
func Fprintf(w io.Writer, format string, a ...interface{}) (n int, err error)
func Fprintln(w io.Writer, a ...interface{}) (n int, err error)
代码示例:
func main() {
file, err := os.OpenFile("D://test/a.txt", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)
if err != nil {
fmt.Println("打开文件出错:", err)
return
}
name := "lee"
age := 23
// 向文件中写入数据
fmt.Fprintf(file, "姓名:%s,年龄:%d \n", name, age)
// 向控制台写入数据
fmt.Fprintf(os.Stdout, "写入成功")
}
运行结果:
以上代码成功将内容写入到了a.txt文件中。
Sprint
Sprint会将传入的内容格式化成一个字符串并返回,和Sprint类似的函数有以下几个:
func Sprint(a ...interface{}) string
:直接返回func Sprintf(format string, a ...interface{}) string
:格式化返回func Sprintln(a ...interface{}) string
:自动换行放回
代码示例:
func main() {
a := "Lee"
s1 := fmt.Sprint("直接返回")
s2 := fmt.Sprintln("自动换行返回")
s3 := fmt.Sprintf("格式化返回:%s", a)
fmt.Print(s1)
fmt.Print(s2)
fmt.Print(s3)
}
运行结果:
Errorf
Errorf是根据传入的内容格式化后返回一个包含该字符串的error。
func Errorf(format string, a ...interface{}) error
代码示例:
func main() {
a := "error"
error := fmt.Errorf("错误:%s", a)
fmt.Print(error)
}
运行结果:
输入
在go语言中获取控制台输入可以使用以下几个函数:
func Scan(a ...interface{}) (n int, err error)
func Scanf(format string, a ...interface{}) (n int, err error)
func Scanln(a ...interface{}) (n int, err error)
Scan
Scan从标准输入读取文本,以空格符或换行符为分隔,将读取到的内容赋值给函数的参数,函数返回成功读取到的数据个数和遇到的错误。
代码示例:
func main() {
var name string
var age int
fmt.Print("请输入姓名和年龄:")
fmt.Scan(&name, &age)
fmt.Printf("姓名:%s,年龄:%d \n", name, age)
}
运行结果:
Scanf
Scanf根据format参数指定的格式去读取由空白符分隔的值保存到函数的参数中。
代码示例:
func main() {
var name string
var age int
fmt.Print("请输入姓名和年龄:")
fmt.Scanf("name=%s age=%d", &name, &age)
fmt.Printf("姓名:%s,年龄:%d \n", name, age)
}
运行结果:
使用Scanf进行输入时,需要完整的在控制台输入函数中指定的格式,例如上述代码中指定的格式为name=%s age=%d
,则在输入时就必须使用该格式,如果还是和之前的Scan中一样只输入lee 23
是读取不到内容的。
Scanln
Scanln类似于Scan,但是不同的是使用Scanln时只要输入了换行之后就会停止读取。
代码示例:
func main() {
var name string
var age int
fmt.Print("请输入姓名和年龄:")
fmt.Scanln(&name, &age)
fmt.Printf("姓名:%s,年龄:%d \n", name, age)
}
运行结果:
例如上述的输入中,如果仅仅只是输入了姓名就换行,那么就会停止读取,但是在Scan中,如果输入姓名后换行不会停止读取还需要继续输入年龄后才会停止读取。
来源:https://juejin.cn/post/7063781069824196644


猜你喜欢
- 因为他的简单实用和数量庞大的插件,所以我们喜欢和使用jQuery,在jQuery数量庞大的插件中有很大的一部分是关于图片的,所以今天我们就整
- 与大多数可以面向对象的编程语言不一样, PHP 是同时支持面向过程和面向对象的编程方式, PHP 开发者可以在面向过程和面向对象二者中自由选
- javascript可以根据输入值自动搜索显示相关的select列表,对于列表很长时可以很方便的查找到要的值。js代码:<script
- 创建用户定义函数,它是返回值的已保存的 Transact-SQL 例程。用户定义函数不能用于执行一组修改全局数据库状态的操作。与系统函数一样
- 一个什么都不懂的家伙非跟我要个sql查询器 随便写了一个,当然为了数据安全,要过滤掉一个sql关键词和系统中的一些表了 哦,对了,里面的一些
- 赠送QQ秀流程是QQ秀商城关键流程之一,占了收入最直接的一部分。它的优化是后续商城流程优化的重要参考。OK,现在就用TA做例子,分享一下流程
- 代码片段一:alert(Function instanceof Object); // truealert(Object instanceo
- 1) 知识准备:为了使用Perl语言去存取mSQL和MySQL数据库的内容,必须安装一些API模块,以下列出一些必须安装的模块名称说明和其下
- 由于系统自带的MySQL默认字符集不是gbk,因此给数据库的推广应用以及中文程序的开发带来极大的不便,在没完没了的GBK和UTF8的转换过程
- 过滤非法的SQL字符的函数代码:'*************************************************
- 一个不错的文字放大特性源码。效果图:运行代码框<script for=document event=onmousemove>//
- 背景每次加载数据都要重新Load,想通过加入的注解方式开发缓存机制,每次缓存不用写代码了缺点:目前仅支持一个返回值,虽然能弄成字典,但是已经
- 如何用Response.Write调用代替内嵌表达式?我们可以利用下面的代码,注意:代码的每一行对响应流有一次写操作,所有的代码都包含在一个
- 研究网页编码很长时间了,因为最近要设计一个友情链接检测的VBS脚本,而与你链接的人的页面很可能是各种编码,以前采取的方法是:如果用GB231
- JS操作二进制很麻烦,而且一直没有一个好的无损压缩工具来实现纯文本的压缩。所以钻研了一段时间的gzip,后来发现还是仅用 LZ77 比较容易
- ASPJPEG组件是Persits出品的共享软件,试用期为30天,您可以在这里下载:http://www.persits.com/aspjp
- 利用系统crontab来定时执行备份文件,按日期对备份结果进行保存,达到备份的目的。1、创建保存备份文件的路径/mysqldata#mkdi
- 此前piscdong已经做过一次评测了,这次的Beta正式推出,我也来参与一下.当回小白鼠吧.新的界面设计非常让人兴奋750){this.r
- 如何用Cookie进行登录验证?很简单,看看这两个文件:login.htm请注册登录随风起舞<FORM ACTION=&qu
- ASP中给函数传参确实是个麻烦事,当参数个数特别多的时候(比如有七八个或者更多的参数个数)差不多就要眼冒金星了,一个个的数吧。而且要命的是参