1. 通用的占位符
%v 值的默认格式。%+v 类似%v,但输出结构体时会添加字段名%#v 相应值的Go语法表示%T 相应值的类型的Go语法表示%% 百分号,字面上的%,非占位符含义
默认格式%v下,对于不同的数据类型,底层会去调用默认的格式化方式:
bool: %tint, int8 etc.: %duint, uint8 etc.: %d, %x if printed with %#vfloat32, complex64, etc: %gstring: %schan: %ppointer: %p
如果是复杂对象的话,按照如下规则进行打印:
struct: {field0 field1 ...}array, slice: [elem0 elem1 ...]maps: map[key1:value1 key2:value2]pointer to above: &{}, &[], &map[]
整数类型:
%b 二进制表示%c 相应Unicode码点所表示的字符%d 十进制表示%o 八进制表示%q 单引号围绕的字符字面值,由Go语法安全地转义%x 十六进制表示,字母形式为小写 a-f%X 十六进制表示,字母形式为大写 A-F%U Unicode格式:123,等同于 "U+007B"
浮点数
%b 无小数部分、二进制指数的科学计数法,如-123456p-78;参见strconv.FormatFloat %e 科学计数法,如-1234.456e+78 %E科学计数法,如-1234.456E+78 %f有小数部分但无指数部分,如123.456 %F 等价于%f %g根据实际情况采用%e或%f格式(以获得更简洁、准确的输出)%e 科学计数法,例如 -1234.456e+78%E 科学计数法,例如 -1234.456E+78%f 有小数点而无指数,例如 123.456%g 根据情况选择 %e 或 %f 以产生更紧凑的(无末尾的0)输出%G 根据情况选择 %E 或 %f 以产生更紧凑的(无末尾的0)输出
布尔型
%t true 或 false
字符串
%s 字符串或切片的无解译字节%q 双引号围绕的字符串,由Go语法安全地转义%x 十六进制,小写字母,每字节两个字符%X 十六进制,大写字母,每字节两个字符
指针
%p 十六进制表示,前缀 0x
