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}</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) true2.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+4E2D2.3 字符串以及字节切片
占位符 说明 举例 输出
%s 输出字符串表示(string类型或[]byte) Printf("%s", []byte("Go语言")) Go语言
%q 双引号围绕的字符串,由Go语法安全地转义 Printf("%q", "Go语言") "Go语言"
%x 十六进制,小写字母,每字节两个字符 Printf("%x", "golang") 676f6c616e67
%X 十六进制,大写字母,每字节两个字符 Printf("%X", "golang") 676F6C616E672.4 指针
占位符 说明 举例 输出
%p 十六进制表示,前缀 0x Printf("%p", &people) 0x4f57f02.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 函数式选项模式(Functional Options Pattern)
Option模式支持传递多个参数,并且在参数个数、类型发生变化时保持兼容性,任意顺序传递参数,下面给大家介绍GO 函数式选项模式(Functional Options Pattern)的相关知识,感兴趣的朋友一起看看吧2021-10-10
GOLANG使用Context管理关联goroutine的方法
这篇文章主要介绍了GOLANG使用Context管理关联goroutine的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2019-01-01
通过Golang实现linux命令ls命令(命令行工具构建)
这篇文章主要为大家详细介绍了如何通过Golang实现一个linux命令ls命令(命令行工具构建),文中的示例代码讲解详细,具有一定的学习价值,感兴趣的可以了解一下2023-01-01


最新评论