Go 语言—基本输入输出包的使用

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 时,可以在函数中使用格式化字符串占位。
代码示例:
运行结果:

常用占位符:
%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)
代码示例:
运行结果:


以上代码成功将内容写入到了 a.txt 文件中。
Sprint
Sprint 会将传入的内容格式化成一个字符串并返回,和 Sprint 类似的函数有以下几个:
func Sprint(a ...interface{}) string
:直接返回func Sprintf(format string, a ...interface{}) string
:格式化返回func Sprintln(a ...interface{}) string
:自动换行放回
代码示例:
运行结果:

Errorf
Errorf 是根据传入的内容格式化后返回一个包含该字符串的 error。
代码示例:
运行结果:

输入
在 go 语言中获取控制台输入可以使用以下几个函数:
Scan
Scan 从标准输入读取文本,以空格符或换行符为分隔,将读取到的内容赋值给函数的参数,函数返回成功读取到的数据个数和遇到的错误。
代码示例:
运行结果:

Scanf
Scanf 根据 format 参数指定的格式去读取由空白符分隔的值保存到函数的参数中。
代码示例:
运行结果:

使用 Scanf 进行输入时,需要完整的在控制台输入函数中指定的格式,例如上述代码中指定的格式为name=%s age=%d
,则在输入时就必须使用该格式,如果还是和之前的 Scan 中一样只输入lee 23
是读取不到内容的。
Scanln
Scanln 类似于 Scan,但是不同的是使用 Scanln 时只要输入了换行之后就会停止读取。
代码示例:
运行结果:

例如上述的输入中,如果仅仅只是输入了姓名就换行,那么就会停止读取,但是在 Scan 中,如果输入姓名后换行不会停止读取还需要继续输入年龄后才会停止读取。
版权声明: 本文为 InfoQ 作者【良猿】的原创文章。
原文链接:【http://xie.infoq.cn/article/008e860c58b33106588781f2f】。文章转载请联系作者。
评论