更新于 

fmt包中的printf()小技巧

占位符

占位符 说明
%v 万能占位符,可以输出任意类型变量,不会打印结构体名
%+v 在打印结构体时,会添加字段名和值
%#v 在打印结构体时,会添加字段名和值
%T 输出变量类型
%% 输出 %
%d 输出十进制
%5d 输出长度为5的十进制,整型长度为5,右对齐,左边留白,例如:fmt.Printf(“|%5d|”,100) // | 100|
%-5d 输出长度为5的十进制,整型长度为5,左对齐,右边留白,例如:fmt.Printf(“|%5d|”,100) // |100 |
%05d 输出长度为5的十进制,整型长度为5,不足5位前面补0,例如:fmt.Printf(“|%05d|”,100) //|00100|
%+d 输出带符号的十进制
%x 输出十六进制
%X 输出大写十六进制
%#x 输出带前缀的十六进制,例如:0x12
%o 输出八进制
%b 输出二进制
%U 打印Unicode字符
%#U 打印带字符的Unicode
%t 输出布尔类型变量 true / false
%s 输出字符串
%5s 最小宽度为5,右对齐。例如:fmt.Printf(“s1:%5s\n”, “哈哈”) // s1: 哈哈
%-5s 最小宽度为5,左对齐。例如:fmt.Printf(“s1:%-5s\n”, “哈哈”) // “s1:哈哈 “
%.5s 最大宽度为5
%5.7s 最小宽度为5,最大宽度为7
%-5.7s 最小宽度为5,最大宽度为7(左对齐)
%5.3s 如果宽度大于3,则截断
%05s 如果宽度小于5,就会在字符串前面补零
%q 输出带引号的字符串
%f (=%.6f) 6位小数点
%e (=%.6e) 6位小数点(科学计数法)
%g 用最少的数字来表示,例如:fmt.Printf(“%.2g\n”, 3.141592654) // 3.1 最多用2位数字表示
%p 带0x的指针(指针值带有0x的十六进制前缀)
%#p 不带0x的指针

共用参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 测试代码
user := user2.User{
Name: "zerduo",
City: "北京",
Introduction: "asdasd",
Phone: "asdadasd",
Password: "asdasd",
}
fmt.Printf("%v\n%+[1]v\n%#[1]v",user) // 这里[1]表示重复使用user变量 注意[1]所在的位置
// %[1] 正确
// %+[1]x 正确
// %#[1]x 正确

// %[1]#x 错误