I want to understand golang call by reference.I wrote this piece of code. When I print both the address(1st address in main and 2nd address in printPointer, it looks different).Please help to understand better.

```
package main

import "fmt"

type person struct{
 name string
 id string
}

func main() {
//struct
 c := person{name: "vijay", id: "1234",}
 fmt.Println(&c)
 printPointer(&c)
 fmt.Println(c)

}

func printPointer(p *person) {
 (*p).name = "Sree"
fmt.Println(&p)
}

```