fmt 是go的基础包之一, 也是使用比较频繁的库,最近也一直在研究go,就把这个库作为分析的第一个基础库,后续在陆续把其他基础库都做个分析。
fmt 常用方法有以下几种
1、输出到控制台(命令行)
print() ,println() 两者区别就是ln是加了换行符的,最后输出都是输出控制台,一般用来做调试用,返回值为输出字符的个数和error
printf() 变量通过占位符输出到控制台
2、变量返回字符串
Sprint(),Sprintln() 功能和print println 一样,底层调用也一样,只不过这个不输出到控制台,只返回字符串
Sprintf() 变量通过占位符返回字符串
3、Fprint(),Fprintln() 这两个是print和println底层调用的方法,功能也一致,估计是以前留下来的只是可能名字太长吧,就用print和println来重新命名了俩新的方法
4、Scan(),Scanf(),Scanln() 这三个和print三个方法正好相反,它们是从标准输入读取数据,也就是命令行读取输入的数据
例:
var (
name string
age int
married bool
)
fmt.Scanf("1:%s 2:%d 3:%t", &name, &age, &married)
fmt.Printf("扫描结果 name:%s age:%d married:%t \n", name, age, married)
命令行 输入: 1:wyf 2:22 3:true 看看输出什么结果
接下来分析的是占位符,go中占位符分不同的类型,以下是别人已经总结好的,我就直接拿来用了,感谢作者
General
%v以默认的方式打印变量的值
%T打印变量的类型
Integer
%+d带符号的整型,fmt.Printf("%+d", 255)输出+255
%q打印单引号
%o不带零的八进制
%#o带零的八进制
%x小写的十六进制
%X大写的十六进制
%#x带0x的十六进制
%U打印Unicode字符
%#U打印带字符的Unicode
%b打印整型的二进制
Float
%f(=%.6f) 6位小数点
%e(=%.6e) 6位小数点(科学计数法)
%g用最少的数字来表示
%.3g最多3位数字来表示
%.3f最多3位小数来表示
String
%s正常输出字符串
%q字符串带双引号,字符串中的引号带转义符
%#q字符串带反引号,如果字符串内有反引号,就用双引号代替
%x将字符串转换为小写的16进制格式
%X将字符串转换为大写的16进制格式
% x带空格的16进制格式
String Width (以5做例子)
%5s最小宽度为5
%-5s最小宽度为5(左对齐)
%.5s最大宽度为5
%5.7s最小宽度为5,最大宽度为7
%-5.7s最小宽度为5,最大宽度为7(左对齐)
%5.3s如果宽度大于3,则截断
%05s如果宽度小于5,就会在字符串前面补零
Struct
%v正常打印。比如:{sam {12345 67890}}
%+v带字段名称。比如:{name:sam phone:{mobile:12345 office:67890}
%#v用Go的语法打印。
比如main.People{name:”sam”, phone:main.Phone{mobile:”12345”, office:”67890”}}
Boolean
%t打印true或false
Pointer
%p带0x的指针
%#p不带0x的指针
作者:gowk
链接:https://www.jianshu.com/p/8be8d36e779c
来源:简书
下篇分析下sync包