golang如何获取结构体地址

Mrdshu · · 5994 次点击
个人看法:因为结构体在内存中成员的分布是连续的,就像你用数组一样获取不到它的地址,所以我们可以获取结构体的成员地址
#1
更多评论
``` 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