golang中字符串格式化占位符
1. 通用占位符
%v 以默认的方式打印变量的值(万能占位符,如果不知道变量是什么类型,用%v即可,go语言会自动为你识别)
%+v 打印结构体时会增加字段名
%#v go样式值表达
%T 打印变量的类型
%% 非占位符,打印出%
假设有结构体asd
type asd struct {
A string `json:"a"`
B string `json:"b"`
C map[string]interface{}
}
aad := asd{}
fmt.Printf("%v\n", aad)
fmt.Printf("%+v\n", aad)
fmt.Printf("%#v\n", aad)
输出:
{ map[]}
{A: B: C:map[]}
main.asd{A:"", B:"", C:map[string]interface {}(nil)}
2. 整型
%+d 带符号的整型
%q 打印出单引号
%o 不带0的八进制
%#o 带0的八进制
%x 小写的十六进制
%X 大写的十六进制
%# 带0x的十六进制
%U 打印Unicode字符
%#U 打印带字符的Unicode
%b 打印带整型的二进制
3. 指定长度的整型
%3d 整型长度为3,右对齐,左边留白
%-3d 左对齐右边留白
%03d 数字前面补零
4. 浮点数
%f =%.3f 三位小数点
%e =%.3e 科学计数法
%g 用最少的数字表示
%.3g 最多三位数字表示
%.3f 最多三位小数点来表示
5. 字符串
%s 正常输出字符串
%q 字符串带双引号,字符串中的引号带转义符
%#q 字符串带反引号,如果字符串内有反引号,就用双引号代替
%x 将字符串转换为小写的16进制格式
%X 将字符串转换为大写的16进制格式
% x 带空格的16进制格式
6. 指定长度的字符串
%3s 最小宽度为3
%-3s 最小宽度为(左对齐)
%.3s 最大宽度为3
%3.6s 最小宽度为3,最大宽度为6
%-3.6 最小宽度为3,最大宽度为6(左对齐)
%6.3s 如果宽度大于3,则截断
%03s 如果宽度小于3,就会在字符串前面补零
7. 结构体
%v 默认方式打印值
%+v 打印出结构体的字段名
%#v 打印结构体字段名和包名
8. 布尔值
%t 打印true或false
9. 指针
%p 带0x的指针,指针值是带有0x的十六进制前缀的
%#p 不带0x的指针