golang中fmt包Printf方法字符串格式化占位符

1,404 阅读2分钟

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的指针