开发者

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

开发者 https://www.devze.com 2024-08-15 11:21 出处:网络 作者: alden_ygq
目录1 占位符%v、%+v、%#v说明2 其他占位符说明2.1 布尔2.2 整数2.3 字符串以及字节切片2.4 指针2.5 浮点数与复数附:go语言结构体打印时,%v 和 %+v 的区别总结 package main
目录
  • 1 占位符%v、%+v、%#v说明
  • 2 其他占位符说明
    • 2.1 布尔
    • 2.2 整数
    • 2.3 字符串以及字节切片
    • 2.4 指针
    • 2.5 浮点数与复数
  • 附:go语言结构体打印时,%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}</code><code>{Name:test Age:15}</code><code>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)        '中'
      %xjs      十六进制表示,字母形式为小写 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 www.devze.com     十六进制,大写字母,每字节两个字符       Printf("%X", "golang")       676F6C616E67

      2.4 指针

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

      2.5 浮点数与复数

      占位符     说明                              举例            输出
      %b      无小数部分的,指数为二的幂的科学计数法,
              与 strconv.ewGmKgFormatFloat 的 'b' 转换格式一致。例如 -123456p-78
      %e      科学计数法,例如 -1234.456e+78        http://www.devze.comPrintf("php%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) 

      附:go语言结构体打印时,%v 和 %+v 的区别

      在 Go 语言中,%v 和 %+v 都是格式化打印结构体的占位符。它们的区别如下:

      • %v:默认格式化打印结构体,只输出结构体的所有字段值,字段之间以空格隔开。
      • %+v:格式化打印结构体,会输出结构体类型和字段名称,字段之间以空格隔开。

      例如,假设有一个结构体 Person 定义如下:

      Go

      type Person struct {
        Name string
        Age int
      }
      

      如果定义了一个 Person 类型的变量 p,并使用 fmt.Println() 函数打印它,则输出结果如下:

      Go

      p := Person{Name: "John Doe", Age: 30}
      
      fmt.Println(p) // {John Doe 30}
      

      使用 %v 占位符打印结构体,只会输出结构体的所有字段值,即 John Doe 和 30

      如果使用 %+v 占位符打印结构体,则会输出结构体类型和字段名称,即 Person{Name: John Doe, Age: 30}

      总结:

      • %v:默认格式化打印结构体,只输出字段值。
      • %+v:格式化打印结构体,输出结构体类型和字段名称。

      根据需要选择合适的占位符来打印结构体。

      总结 

      到此这篇关于golang占位符%v、%+v、%#v举例详解的文章就介绍到这了,更多相关go占位符%v、%+v、%#v内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

      0

      精彩评论

      暂无评论...
      验证码 换一张
      取 消

      关注公众号