通用
- %v 值的默认格式
- %V 当值的类型是结构体时,同时打印字段名
- %#V 值的 go 语法形式表示
%% 字面上的%
fmt.Printf("%v", people) // 输出:{张三}
fmt.Printf("%+v", people) // 输出:{Name: "张三"}
fmt.Printf("%+V", people) // 输出:main.Human{Name: "张三"}
fmt.Printf("%%") // 输出:%
布尔值类型
%t true 或 false
fmt.Printf("%t", true) // 输出:true
数值类型
%b 二进制
- %o 八进制
- %d 十进制
- %x 十六进制,字母为 a - f
- %X 十六进制,字母为 A - F
- %c 相应 Unicode 码点所表示的字符
- %q 单引号围绕的字符字面量,由 Go 语法安全转义
%U Unicode 格式:U+1234,等同于 “U+%04X”
fmt.Printf("%b", 10) // 输出:1010
fmt.Printf("%o", 10) // 输出:012
fmt.Printf("%b", 0x12) // 输出:18
fmt.Printf("%x", 10) // 输出:a
fmt.Printf("%X", 10) // 输出:A
fmt.Printf("%c", 0x4E2D) // 输出:中
fmt.Printf("%q", 0x4E2D) // 输出:'中'
fmt.Printf("%U", 0x4E2D) // 输出:U+4E2D
浮点类型
%b 无小数部分的,指数为二的幂的科学计数法,与函数 strconv.FormatFloat 的转换格式一致。
- %e 科学计数法,字母为 e
- %E 科学计数法,字母为 E
- %f 有小数点而无指数
- %g 根据情况选择 %e 或 %f 以产生更紧凑的且末尾无 0 输出
%G 根据情况选择 %E 或 %f 以产生更紧凑的且末尾无 0 输出
fmt.Printf("%b", 3.1415926)
fmt.Printf("%e", 123456) // 输出:1.23456e+5
fmt.Printf("%E", 123456) // 输出:1.23456E+5
fmt.Printf("%f", 10.2) // 输出:10.200000
fmt.Printf("%g", 10.20) // 输出:10.2
fmt.Printf("%G", 10.20) // 输出:10.2
字符串、字节切片
%s 输出字符串 (string 或 []byte);
- %q 双引号围绕的字符串字面量,由 Go 语法安全转义;
- %x 进制,小写字母,每个字节占两个字符;
%X 十六进制,大写字母,每个字节占两个字符;
ftm.Printf("%s", []byte("go语言")) // 输出:"go语言"
ftm.Printf("%q", "go语言") // 输出:"go语言"
fmt.Printf("%x", "golang") // 输出:676f6c616e67
fmt.Printf("", "golang") // 输出:676F6C616E67
Other
%p 以十六进制形式表示变量地址
fmt.Printf("%p", people) // 输出:0xc04203bd70
fmt.Printf("%p", &people) // 输出:0xc04203e3c0