在 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
:格式化打印结构体,输出结构体类型和字段名称。
根据需要选择合适的占位符来打印结构体。