Golang

关注公众号 jb51net

关闭
首页 > 脚本专栏 > Golang > go占位符%v、%+v、%#v

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

作者:alden_ygq

这篇文章主要给大家介绍了关于golang占位符%v、%+v、%#v的相关资料,Go语言中的占位符通常用于格式化输出,它们以%开头,后跟一个字符,表示要转换的数据类型,需要的朋友可以参考下
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)        '中'
%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) 

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

在 Go 语言中,%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}

总结:

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

总结 

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

您可能感兴趣的文章:
阅读全文