go格式化输出
格式化输出
go使用和C语言类似的格式化输出语法,用的是fmt.Printf
函数。
go语言的格式化语法结构如下
// %[旗标][宽度][.精度][\[arg索引\]]动词
"%+8.3[3]f"
旗标
旗标 | 效果 |
---|---|
+ |
对于数值类型输出正负号;%+q 只输出ASCII编码的字符;%+v 在%v 的基础上输出字段名 |
- |
在右边进行宽度填充,而不是默认的左边 |
空格 | 对于数值类型的正数,保留一个空白的符号位 |
0 |
用0进行宽度填充而不用空格 |
# |
八进制添加前缀0(%#o ),十六进制添加前缀0x(%#x )或0X(%#X ),指针去掉前缀0x(%#p ),%#v 在%+v 的基础上输出类型名 |
宽度和精度
宽度与精度的控制格式以Unicdoe码点为单位。可以用常数表示,也可以用*
表示,此时它们的值会从下一个操作数中获取,该操作数类型必须为int。
- 对数值而言,宽度为该数值占用区域的最小宽度;精度为小数点后的位数。但是对%g(%G),精度为数字的总和。
- 对于字符串,精度为输出的最大字符数,必要时会截断字符串。
占位符
格式 | 说明 |
---|---|
%d |
十进制数 |
%b,%o,%x |
二进制、八进制、十六进制整数 |
%#b,%#o,%#x |
二进制、八进制、十六进制整数,并显示相应前缀 |
%f,%g,%e |
浮点数 |
%t |
布尔值: true或者false |
%c |
相应Unicode码点表示的字符 |
%s |
字符串 |
%U |
显示Unicode码点 |
%q |
带双引号的字符串"abc123" 或者带单引号的字符'a' ,'b' |
%v |
变量的自然形式(natural format) |
%#v |
使用Go语言类是的语法打印变量值 |
%T |
变量的类型 |
%% |
字面上的百分号标志(无操作数) |
%p |
十六进制表示指针地址,并使用前缀0x |
浮点数
格式 | 说明 |
---|---|
%e,%E |
科学计数法,以10为底 |
%f,%F |
普通小数格式 |
%g |
根据情况选择 %e 或 %f 以产生更紧凑的(无末尾的 0)输出 |
%G |
根据情况选择 %E 或 %F 以产生更紧凑的(无末尾的 0)输出 |