Pointers 如何在golang中正确打印指针变量

Pointers 如何在golang中正确打印指针变量,pointers,go,Pointers,Go,当我使用 type person struct{} var tom *person = &person{} fmt.Printf("%+v\n", tom)//prints:&{} 为什么结果是&plus数据?它是一个地址(0x0055) 当我使用 type person struct{} var tom *person = &person{} fmt.Printf("%+v\n", tom)//prints:&{} 它给我一个地址,它给我0x0038,为

当我使用

type person struct{}
var tom *person = &person{}
fmt.Printf("%+v\n", tom)//prints:&{}
为什么结果是&plus数据?它是一个地址(0x0055)

当我使用

type person struct{}
var tom *person = &person{}
fmt.Printf("%+v\n", tom)//prints:&{}

它给我一个地址,它给我0x0038,为什么%v和%p有相同的结果?

tom
是指向
人的指针。当您使用
&tom
时,您正在创建第二个指针,这是指向一个人的指针

在第一个示例中,您使用
%+v
打印
tom
的默认值。默认值遵从指针并打印结构本身


在第二个示例中,
%+v
应用于“double”指针。它仍然遵从指针,到达初始指针。请参见此示例:

当您使用%v时,是的。@VitorDeMario我感到困惑,请帮助我。我只是评论了几行。