当前位置: 代码网 > it编程>前端脚本>Golang > golang占位符%v、%+v、%#v举例详解

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

2024年06月13日 Golang 我要评论
package mainimport "fmt"type person struct { name string age int}func main() { person := person{
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内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com