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

 更新时间:2024年05月30日 09:36:08   作者: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 都是格式化打印结构体的占位符。它们的区别如下:

  • %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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Go语言内置包的使用

    Go语言内置包的使用

    本文主要介绍了Go语言内置包的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • go带缓冲chan实现消息队列功能

    go带缓冲chan实现消息队列功能

    本文主要介绍了go带缓冲chan实现消息队列功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • Go 1.22对net/http包的路由增强功能详解

    Go 1.22对net/http包的路由增强功能详解

    Go 1.22 版本对 net/http 包的路由功能进行了增强,引入了方法匹配(method matching)和通配符(wildcards)两项新功能,本文将给大家详细的介绍一下Go 1.22对net/http包的路由增强功能,需要的朋友可以参考下
    2024-02-02
  • Go 语言入门学习之正则表达式

    Go 语言入门学习之正则表达式

    这篇文章主要介绍了Go 语言入门学习之正则表达式,文章基于GO语言的相关资料展开详细内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-04-04
  • 深入解析Go语言中for循环的写法

    深入解析Go语言中for循环的写法

    这篇文章主要介绍了Go语言中for循环的写法,是Golang入门学习中的基础知识,需要的朋友可以参考下
    2015-10-10
  • Go语言中关闭带缓冲区的频道实例分析

    Go语言中关闭带缓冲区的频道实例分析

    这篇文章主要介绍了Go语言中关闭带缓冲区的频道,实例分析了带缓冲区频道的原理与用法,以及关闭带缓冲区频道的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-02-02
  • go从指定的URL下载图片并保存到本地的代码实现

    go从指定的URL下载图片并保存到本地的代码实现

    这段代码定义了一个名为 downloadImage 的函数,其目的是从指定的URL下载图片并保存到本地文件系统,本文是对代码功能的详细描述,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-08-08
  • golang结合mysql设置最大连接数和最大空闲连接数

    golang结合mysql设置最大连接数和最大空闲连接数

    本文介绍golang 中连接MySQL时,如何设置最大连接数和最大空闲连接数,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • Golang内存管理之内存逃逸分析

    Golang内存管理之内存逃逸分析

    逃逸分析是指由编译器决定内存分配的位置,不需要程序员指定,这篇文章主要为大家详细介绍了Golang中内存逃逸分析的几种方法,需要的可以参考一下
    2023-07-07
  • 一文详解Go语言中的Defer机制

    一文详解Go语言中的Defer机制

    在Go语言中,defer是一个关键字,用于确保资源的清理和释放,特别是在函数中创建的资源,下面就跟随小编一起来了解下Defer机制的具体使用吧
    2024-11-11

最新评论