通用

  • %v 值的默认格式
  • %V 当值的类型是结构体时,同时打印字段名
  • %#V 值的 go 语法形式表示
  • %% 字面上的%

    1. fmt.Printf("%v", people) // 输出:{张三}
    2. fmt.Printf("%+v", people) // 输出:{Name: "张三"}
    3. fmt.Printf("%+V", people) // 输出:main.Human{Name: "张三"}
    4. fmt.Printf("%%") // 输出:%

    布尔值类型

  • %t true 或 false

    1. fmt.Printf("%t", true) // 输出:true

    数值类型

  • %b 二进制

  • %o 八进制
  • %d 十进制
  • %x 十六进制,字母为 a - f
  • %X 十六进制,字母为 A - F
  • %c 相应 Unicode 码点所表示的字符
  • %q 单引号围绕的字符字面量,由 Go 语法安全转义
  • %U Unicode 格式:U+1234,等同于 “U+%04X”

    1. fmt.Printf("%b", 10) // 输出:1010
    2. fmt.Printf("%o", 10) // 输出:012
    3. fmt.Printf("%b", 0x12) // 输出:18
    4. fmt.Printf("%x", 10) // 输出:a
    5. fmt.Printf("%X", 10) // 输出:A
    6. fmt.Printf("%c", 0x4E2D) // 输出:中
    7. fmt.Printf("%q", 0x4E2D) // 输出:'中'
    8. fmt.Printf("%U", 0x4E2D) // 输出:U+4E2D

    浮点类型

  • %b 无小数部分的,指数为二的幂的科学计数法,与函数 strconv.FormatFloat 的转换格式一致。

  • %e 科学计数法,字母为 e
  • %E 科学计数法,字母为 E
  • %f 有小数点而无指数
  • %g 根据情况选择 %e 或 %f 以产生更紧凑的且末尾无 0 输出
  • %G 根据情况选择 %E 或 %f 以产生更紧凑的且末尾无 0 输出

    1. fmt.Printf("%b", 3.1415926)
    2. fmt.Printf("%e", 123456) // 输出:1.23456e+5
    3. fmt.Printf("%E", 123456) // 输出:1.23456E+5
    4. fmt.Printf("%f", 10.2) // 输出:10.200000
    5. fmt.Printf("%g", 10.20) // 输出:10.2
    6. fmt.Printf("%G", 10.20) // 输出:10.2

    字符串、字节切片

  • %s 输出字符串 (string 或 []byte);

  • %q 双引号围绕的字符串字面量,由 Go 语法安全转义;
  • %x 进制,小写字母,每个字节占两个字符;
  • %X 十六进制,大写字母,每个字节占两个字符;

    1. ftm.Printf("%s", []byte("go语言")) // 输出:"go语言"
    2. ftm.Printf("%q", "go语言") // 输出:"go语言"
    3. fmt.Printf("%x", "golang") // 输出:676f6c616e67
    4. fmt.Printf("", "golang") // 输出:676F6C616E67

    Other

  • %p 以十六进制形式表示变量地址

    1. fmt.Printf("%p", people) // 输出:0xc04203bd70
    2. fmt.Printf("%p", &people) // 输出:0xc04203e3c0