How to print out pointer variable correctly in golang

go, pointers

Solution

`tom` is a pointer to a `person`. When you use `&tom`, you're a creating a second pointer, this a pointer to a pointer to a person.

In your first example, you're using `%+v` to print the default value of `tom`. The default value deferences the pointer and prints the struct itself.

In your second example, `%+v` is applying to the "double" pointer. It still deferences the pointer, getting to the initial pointer. See this example: http://play.golang.org/p/IZThhkiQXM

Problem

``` type person struct{} var tom *person = &person{} ``` When I use ``` fmt.Printf("%+v\n", tom)//prints:&{} ``` Why the result is & plus data?It is surposed to be an address(0x0055) When I use ``` fmt.Printf("%+v\n", &tom)//0x0038 fmt.Printf("%p\n", &tom)//0x0038 ``` It gives me an address,it gives me 0x0038,why %v and %p has the same result?

Original source