新手发现一件困惑的事情,如果我想获取一个结构体的地址,用&似乎并不能做到,那请问各位大神应该怎么获取一个结构体地址?
```
type User struct {
name string
pwd string
}
func main() {
num := 1
fmt.Println(num, &num)
user:=User{"aa", "123"}
fmt.Println(user, &user)
}
```
输出:
```
1 0xc00000c0a8
{aa 123} &{aa 123}
```
更多评论
```
type User struct {
name string
pwd string
}
func main() {
num := 1
fmt.Println(num, &num)
user:=User{"aa", "123"}
fmt.Printf("%v,%p", user, &user)
}
```
#2
`fmt.Println(user, &user)` 使用的是默认格式的打印方式`%v`。
对于 `struct` 默认输出格式是 `{field0 field1 ...}`。
想要输出地址,需要使用 `%p`,`fmt.Printf("%v %p\n", user, &user)`。
还有一些的格式化方式:
```
fmt.Printf("%v %v\n", user, &user)
fmt.Printf("%+v %+v\n", user, &user)
fmt.Printf("%#v %#v\n", user, &user)
```
更多的参考下文档:https://golang.google.cn/pkg/fmt/#hdr-Printing
#3