golang如何获取结构体地址

weixin_38065938 2019-09-20 10:20:15
新手发现一件困惑的事情,如果我想获取一个结构体的地址,用&似乎并不能做到,那请问各位大神应该怎么获取一个结构体地址?
```
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}
```
...全文
299 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38082050 2019-09-20
  • 打赏
  • 举报
回复
个人看法:因为结构体在内存中成员的分布是连续的,就像你用数组一样获取不到它的地址,所以我们可以获取结构体的成员地址
weixin_38087180 2019-09-20
  • 打赏
  • 举报
回复
``` 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) } ```
weixin_38105175 2019-09-20
  • 打赏
  • 举报
回复 1
`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

433

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧