golang占位符%v、%+v、%#v详解

package main

import "fmt"

type Person struct {
  Name string
  Age  int
}

func main() {
  person := Person{
    Name: "test",
    Age:  15,
  }
  fmt.Printf("%v\n", person)
  fmt.Printf("%+v\n", person)
  fmt.Printf("%#v\n", person)
}

执行输出如下:

{test 15}{Name:test Age:15}main.Person{Name:"test", Age:15}

1 占位符%v、%+v、%#v说明

占位符     说明          
%v      输出所有的值信息 
%+v     打印结构体时会打印字段名
%#v     相应值的Go语法表示

2 其他占位符说明

2.1 布尔

占位符       说明                举例                     输出
%t          true 或 false。Printf("%t", true)       true

2.2 整数

占位符     说明                                  举例                       输出
%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

2.3 字符串以及字节切片

占位符          说明                              举例                           输出
%s      输出字符串表示(string类型或[]byte)    Printf("%s", []byte("Go语言"))  Go语言
%q      双引号围绕的字符串,由Go语法安全地转义   Printf("%q", "Go语言")         "Go语言"
%x      十六进制,小写字母,每字节两个字符       Printf("%x", "golang")       676f6c616e67
%X      十六进制,大写字母,每字节两个字符       Printf("%X", "golang")       676F6C616E67

2.4 指针

占位符         说明                      举例                             输出
%p      十六进制表示,前缀 0x          Printf("%p", &people)             0x4f57f0

2.5 浮点数与复数

占位符     说明                              举例            输出
%b      无小数部分的,指数为二的幂的科学计数法,
        与 strconv.FormatFloat 的 'b' 转换格式一致。例如 -123456p-78
%e      科学计数法,例如 -1234.456e+78        Printf("%e", 10.2)     1.020000e+01
%E      科学计数法,例如 -1234.456E+78        Printf("%e", 10.2)     1.020000E+01
%f      有小数点而无指数,例如 123.456        Printf("%f", 10.2)     10.200000
%g      根据情况选择 %e 或 %f 以产生更紧凑的(无末尾的0)输出 Printf("%g", 10.20)   10.2
%G      根据情况选择 %E 或 %f 以产生更紧凑的(无末尾的0)输出 Printf("%G", 10.20+2i) 

猜你喜欢

转载自blog.csdn.net/ygq13572549874/article/details/131819723
V
今日推荐