普通占位符
占位符 | 说明 | 举例 | 输出 |
%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+%04X" | Printf("%U", 0x4E2D) | U+4E2D |
p := point{1, 2} fmt.Printf("%v\n", p) //{1,2} fmt.Printf("%+v\n", p) //{x:1 y:2} fmt.Printf("%#v\n", p) //main.point{x:1, y:2} fmt.Printf("%T\n", p) // main.point fmt.Printf("%t\n", true) //true fmt.Printf("%d\n", 123) //123 fmt.Printf("%b\n", 14) //1110 fmt.Printf("%c\n", 33) //! fmt.Printf("%x\n", 456) //1c8 fmt.Printf("%f\n", 78.9) //78.900000 fmt.Printf("%e\n", 123400000.0) //1.234000e+08 fmt.Printf("%E\n", 123400000.0) //1.234000E+08 fmt.Printf("%s\n", "\"string\"") //"string" fmt.Printf("%q\n", "\"string\"")//"\"string\"" fmt.Printf("%x\n", "hex this") //6865782074686973 fmt.Printf("%p\n", &p) //0xc0000b4010 fmt.Printf("|%6d|%6d|\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 %s\n", "error")//an error