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