普通占位符
占位符 | 说明 | 举例 | 输出 |
---|---|---|---|
%v | 相应值的默认格式。 | Printf("%v", people) | {zhangsan} |
% v | 打印结构体时,会添加字段名 | Printf("% v", people) | {Name:zhangsan} |
%#v | 相应值的Go语法表示 | Printf("#v", people) | main.Human{Name:"zhangsan"} |
%T | 相应值的类型的Go语法表示 | Printf("%T", people) | main.Human |
%% | 字面上的百分号,并非值的占位符 | Printf("%%") | % |
整数占位符
占位符 | 说明 | 举例 | 输出 |
---|---|---|---|
%b | 二进制表示 | Printf("%b", 5) | 101 |
%c | 相应Unicode码点所表示的字符 | Printf("%c", 0x4E2D) | 中 |
%d | 十进制表示 | Printf("%d", 0x12) | 18 |
%o | 八进制表示 | Printf("%d", 10) | 12 |
%q | 单引号围绕的字符字面值,由Go语法安全地转义 | Printf("%q", 0x4E2D) | '中' |
%x | 十六进制表示,字母形式为小写 a-f | Printf("%x", 13) | d |
%X | 十六进制表示,字母形式为大写 A-F | Printf("%x", 13) | D |
%U | Unicode格式:U 1234,等同于 "U X" | Printf("%U", 0x4E2D) | U 4E2D |
p := point{1, 2}
fmt.Printf("%vn", p) //{1,2}
fmt.Printf("% vn", p) //{x:1 y:2}
fmt.Printf("%#vn", p) //main.point{x:1, y:2}
fmt.Printf("%Tn", p) // main.point
fmt.Printf("%tn", true) //true
fmt.Printf("%dn", 123) //123
fmt.Printf("%bn", 14) //1110
fmt.Printf("%cn", 33) //!
fmt.Printf("%xn", 456) //1c8
fmt.Printf("%fn", 78.9) //78.900000
fmt.Printf("%en", 123400000.0) //1.234000e 08
fmt.Printf("%En", 123400000.0) //1.234000E 08
fmt.Printf("%sn", ""string"") //"string"
fmt.Printf("%qn", ""string"")//""string""
fmt.Printf("%xn", "hex this") //6865782074686973
fmt.Printf("%pn", &p) //0xc0000b4010
fmt.Printf("|m|m|n", 12, 345) //| 12| 345|
fmt.Printf("|%6.2f|%6.2f|n", 1.2, 3.45) //| 1.20| 3.45|
fmt.Printf("|%-6.2f|%-6.2f|n", 1.2, 3.45) //|1.20 |3.45 |
fmt.Printf("|%6s|%6s|n", "foo", "b") //| foo| b|
fmt.Printf("|%-6s|%-6s|n", "foo", "b") //|foo |b |
s := fmt.Sprintf("a %s", "string")
fmt.Println(s) //a string
fmt.Fprintf(os.Stderr, "an %sn", "error")//an error