* 和 &
在Go语言中,fmt.Println
函数用于打印信息到标准输出。当你使用 fmt.Println
打印一个变量时,你可以选择打印变量的值或者变量的地址。这里的区别主要在于你是想要打印一个指针指向的值,还是打印指针本身的值(即内存地址)。
-
fmt.Println(*ps3)
:- 这里
*ps3
是对指针ps3
进行了解引用操作,它获取了ps3
指向的Person
结构体的值。 - 因此,
fmt.Println(*ps3)
会打印出Person
结构体的值,包括其所有字段的值。
- 这里
-
fmt.Println(&ps3)
:- 这里
&ps3
是取ps3
的地址,它获取了指针ps3
自身在内存中的地址。 - 因此,
fmt.Println(&ps3)
会打印出指针ps3
的内存地址,而不是它指向的Person
结构体的值。
- 这里
举个例子,如果你有一个 Person
结构体,它可能看起来像这样:
go
type Person struct {
Name string
Age int
}
如果你创建了一个 Person
实例:
go
ps3 := new(Person)
fmt.Println(*ps3)
会打印出{ }
,因为new(Person)
会分配内存并初始化Person
的字段为零值(对于字符串是空字符串,对于整数是0)。fmt.Println(&ps3)
会打印出类似0x123456
的内存地址,这是ps3
指针在内存中的位置。
总结来说,*ps3
用于获取指针指向的值,而 &ps3
用于获取指针本身的地址。
时来天地皆同力,运去英雄不自由
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
2023-09-19 calio 创建secret
2018-09-19 ansible 配置了端口在host文件但是还要走22 ip:60001 ansible_ssh_port=60001
2018-09-19 ansible wc -l 对结果值取大小的操作
2017-09-19 批量改名的多种方法stu_3_finished.jpg 去掉finished,stu_{1..20}_finished.jpg